新增 sa-token.sso.mode 配置项,用于约定此系统使用的 SSO 模式。

This commit is contained in:
click33 2023-05-15 01:26:26 +08:00
parent d4ff8df5b4
commit 94b1ab29a6
2 changed files with 65 additions and 3 deletions

View File

@ -99,6 +99,40 @@ sa-token:
- 此时框架只以 auth-url 值为准,得到的 auth-url 值是:`http://my-site.com/sso/auth2`,其它三个 url 配置项同理。
### 问:我接手了一个项目,里面集成了 Sa-Token SSO ,请问怎么快速分辨它用的模式几?
**方法一:看代码注释。**
如果开发这个项目的人没有写清楚注释那就 gg 了。
**方法二,根据配置项来分析,例如:**
- 先看配置项 `sa-token.cookie.domain`,如果此配置项有值,一般是在使用模式一开发,否则就是模式二或者模式三。
- 再看配置项 `sa-token.sso.is-http` ,如果有值且为 true一般是在使用模式三否则就是模式二。
**方法三,根据配置项 `sa-token.sso.mode` 的提示来判断**
`sa-token.sso.mode` 是框架预留的约定型配置项此配置项不对代码逻辑产生任何影响只为系统做一个标记标注此系统用到了SSO的哪个模式。
例如你可以将其配置为 `sa-token.sso.mode=client-2`,代表当前系统为 sso-client 端,使用 SSO 模式二来对接。
需要注意,这个配置项不是必须的,你不写也不会对代码造成任何影响,只有在你需要为系统做一个明确的标记时才需要去配置它,方便后人阅读代码时快速分析使用的模式。
例如我们可以使用以下约定:
- `sa-token.sso.mode=client-2`:代表当前系统为 sso-client 端,使用 SSO 模式二来对接。
- `sa-token.sso.mode=client-2,h5`:代表当前系统为 sso-client 端,使用 SSO 模式二来对接,并且是前后端分离模式。
- `sa-token.sso.mode=server-123`:代表当前系统为 sso-server 端,同时开放了 SSO 模式一、模式二、模式三。
- `sa-token.sso.mode=server-2,client-2`:代表当前系统既是 sso-server 端,又是 sso-clent 端,使用模式二来对接。
- 等等等等...
此配置项可以是任意字符串,你也可以自己整理一套合适的表达规则。
### 问SSO模式二或模式三第一个 client 登录成功之后再访问其它两个 client 不会自动登录,需要点一下登录按钮才会登录上?
答:这是正常现象,系统 1 登录成功之后,系统 2 与系统 3 需要点击登录按钮,才会登录成功。

View File

@ -22,7 +22,12 @@ public class SaSsoConfig implements Serializable {
private static final long serialVersionUID = -6541180061782004705L;
// ----------------- Server端相关配置
// ----------------- Server端相关配置
/**
* 指定当前系统集成 SSO 时使用的模式约定型配置项不对代码逻辑产生任何影响
*/
public String mode = "";
/**
* Ticket有效期 (单位: )
@ -47,6 +52,11 @@ public class SaSsoConfig implements Serializable {
// ----------------- Client端相关配置
// /**
// * 指定当前系统集成 SSO 时使用的模式约定型配置项不对代码逻辑产生任何影响
// */
// public String mode = ""; // 同Server端不再重复声明
/**
* 当前 Client 名称标识用于和 ticket 码的互相锁定
*/
@ -103,6 +113,24 @@ public class SaSsoConfig implements Serializable {
public String serverUrl;
/**
* 获取 指定当前系统集成 SSO 时使用的模式约定型配置项不对代码逻辑产生任何影响
*
* @return /
*/
public String getMode() {
return this.mode;
}
/**
* 设置 指定当前系统集成 SSO 时使用的模式约定型配置项不对代码逻辑产生任何影响
*
* @param mode /
*/
public void setMode(String mode) {
this.mode = mode;
}
/**
* @return Ticket有效期 (单位: )
*/
@ -297,7 +325,8 @@ public class SaSsoConfig implements Serializable {
@Override
public String toString() {
return "SaSsoConfig ["
+ "ticketTimeout=" + ticketTimeout
+ "mode=" + mode
+ ", ticketTimeout=" + ticketTimeout
+ ", allowUrl=" + allowUrl
+ ", isSlo=" + isSlo
+ ", isHttp=" + isHttp
@ -457,5 +486,4 @@ public class SaSsoConfig implements Serializable {
return sendHttp;
}
}