diff --git a/sa-token-demo/sa-token-demo-sso2-client/src/main/java/com/pj/sso/SsoClientController.java b/sa-token-demo/sa-token-demo-sso2-client/src/main/java/com/pj/sso/SsoClientController.java
index 90a892c7..ecd0a19f 100644
--- a/sa-token-demo/sa-token-demo-sso2-client/src/main/java/com/pj/sso/SsoClientController.java
+++ b/sa-token-demo/sa-token-demo-sso2-client/src/main/java/com/pj/sso/SsoClientController.java
@@ -15,12 +15,7 @@ import cn.dev33.satoken.util.SaResult;
@RestController
public class SsoClientController {
- /*
- * SSO-Client端:处理所有SSO相关请求
- * http://{host}:{port}/sso/login -- Client端登录地址,接受参数:back=登录后的跳转地址
- * http://{host}:{port}/sso/logout -- Client端单点注销地址(isSlo=true时打开),接受参数:back=注销后的跳转地址
- * http://{host}:{port}/sso/logoutCall -- Client端单点注销回调地址(isSlo=true时打开),此接口为框架回调,开发者无需关心
- */
+ // 首页
@RequestMapping("/")
public String index() {
String str = "
Sa-Token SSO-Client 应用端
" +
@@ -29,8 +24,13 @@ public class SsoClientController {
"注销";
return str;
}
-
- // SSO-Client端:处理所有SSO相关请求
+
+ /*
+ * SSO-Client端:处理所有SSO相关请求
+ * http://{host}:{port}/sso/login -- Client端登录地址,接受参数:back=登录后的跳转地址
+ * http://{host}:{port}/sso/logout -- Client端单点注销地址(isSlo=true时打开),接受参数:back=注销后的跳转地址
+ * http://{host}:{port}/sso/logoutCall -- Client端单点注销回调地址(isSlo=true时打开),此接口为框架回调,开发者无需关心
+ */
@RequestMapping("/sso/*")
public Object ssoRequest() {
return SaSsoHandle.clientRequest();
diff --git a/sa-token-demo/sa-token-demo-sso2-client/src/main/resources/application.yml b/sa-token-demo/sa-token-demo-sso2-client/src/main/resources/application.yml
index 5bc9f3ad..1e629520 100644
--- a/sa-token-demo/sa-token-demo-sso2-client/src/main/resources/application.yml
+++ b/sa-token-demo/sa-token-demo-sso2-client/src/main/resources/application.yml
@@ -6,7 +6,7 @@ server:
sa-token:
# SSO-相关配置
sso:
- # SSO-Server端 单点登录地址
+ # SSO-Server端 统一认证地址
auth-url: http://sa-sso-server.com:9000/sso/auth
# 是否打开单点注销接口
is-slo: true
diff --git a/sa-token-demo/sa-token-demo-sso3-client/src/main/resources/application.yml b/sa-token-demo/sa-token-demo-sso3-client/src/main/resources/application.yml
index bdf0510a..5e124369 100644
--- a/sa-token-demo/sa-token-demo-sso3-client/src/main/resources/application.yml
+++ b/sa-token-demo/sa-token-demo-sso3-client/src/main/resources/application.yml
@@ -6,7 +6,7 @@ server:
sa-token:
# SSO-相关配置
sso:
- # SSO-Server端 单点登录地址
+ # SSO-Server端 统一认证地址
auth-url: http://sa-sso-server.com:9000/sso/auth
# 使用Http请求校验ticket
is-http: true
diff --git a/sa-token-doc/doc/sso/sso-type1.md b/sa-token-doc/doc/sso/sso-type1.md
index 06065ff1..97b206e3 100644
--- a/sa-token-doc/doc/sso/sso-type1.md
+++ b/sa-token-doc/doc/sso/sso-type1.md
@@ -18,8 +18,6 @@
而共享Redis,并不需要我们把所有项目的数据都放在同一个Redis中,Sa-Token提供了 **[权限缓存与业务缓存分离]** 的解决方案,详情戳:[Alone独立Redis插件](/plugin/alone-redis)。
-
-
OK,所有理论就绪,下面开始实战:
> Sa-Token整合同域单点登录非常简单,相比于正常的登录,你只需增加配置 `sa-token.cookie-domain=xxx.com` 指定一下Cookie写入时的父级域名即可。
@@ -37,7 +35,8 @@ OK,所有理论就绪,下面开始实战:
127.0.0.1 s3.stp.com
```
-其中:`sso.stp.com`为统一认证地址,当用户在其它 Client 端发起登录请求时,均将其重定向至认证中心,待到登录成功之后再原路返回到 Client 端。
+
+其中:`sso.stp.com`为统一认证地址,其它均为 Client 端。
### 2、指定Cookie的作用域
@@ -100,7 +99,7 @@ public class SaSsoApplication {
![sso-type1-wd.png](https://oss.dev33.cn/sa-token/doc/sso/sso-type1-wd.png 's-w-sh')
-现在访问任意节点的登录接口:[http://s1.stp.com:8081/sso/doLogin](http://s1.stp.com:8081/sso/doLogin)
+现在访问SSO认证中心的登录接口:[http://sso.stp.com:8081/sso/doLogin](http://sso.stp.com:8081/sso/doLogin)
![sso-type1-login.png](https://oss.dev33.cn/sa-token/doc/sso/sso-type1-login.png 's-w-sh')
@@ -111,11 +110,11 @@ public class SaSsoApplication {
测试完毕!
-### 5、搭建统一认证中心
+### 5、完善统一认证中心
上面的示例,我们简单的演示了SSO模式一的认证原理。
-当然,在实际的正式项目中,我们肯定不会每个系统都内置一个登录接口,一般的做法是搭建一个独立的SSO认证中心,我们所有 Client 端的登录请求都会被重定向至认证中心,
+当然,在实际的正式项目中,我们肯定不会每个 Client 端都内置一个登录接口,一般的做法是只在SSO认证中心保留登录接口,我们所有 Client 端的登录请求都会被重定向至认证中心,
待到登录成功之后再原路返回到 Client 端。
我们可以运行一下官方仓库的示例,里面有制作好的登录页面
diff --git a/sa-token-doc/doc/sso/sso-type2.md b/sa-token-doc/doc/sso/sso-type2.md
index ba57f081..4ab59701 100644
--- a/sa-token-doc/doc/sso/sso-type2.md
+++ b/sa-token-doc/doc/sso/sso-type2.md
@@ -1,31 +1,34 @@
# SSO模式二 URL重定向传播会话
-如果我们的多个系统:部署在不同的域名之下,但是后端可以连接同一个Redis,那么便可以使用 **`[URL重定向传播会话]`** 的方式做到单点登录
+如果我们的多个系统:部署在不同的域名之下,但是后端可以连接同一个Redis,那么便可以使用 **`[URL重定向传播会话]`** 的方式做到单点登录。
### 0、解题思路
-首先我们再次复习一下多个系统之间,为什么无法同步登录状态?
+首先我们再次复习一下,多个系统之间为什么无法同步登录状态?
-1. 前端的`Token`无法在多个系统下共享
-2. 后端的`Session`无法在多个系统间共享
+1. 前端的`Token`无法在多个系统下共享。
+2. 后端的`Session`无法在多个系统间共享。
-关于第二点,我们已经在"SSO模式一"章节中阐述,使用 [Alone独立Redis插件](/plugin/alone-redis) 做到权限缓存直连SSO-Redis数据中心,在此不再赘述
+关于第二点,我们已在 "SSO模式一" 章节中阐述,使用 [Alone独立Redis插件](/plugin/alone-redis) 做到权限缓存直连 SSO-Redis 数据中心,在此不再赘述。
-而第一点,才是我们解决问题的关键所在,在跨域模式下,意味着"共享Cookie方案"的失效,我们必须采用一种新的方案来传递Token
+而第一点,才是我们解决问题的关键所在,在跨域模式下,意味着 "共享Cookie方案" 的失效,我们必须采用一种新的方案来传递Token。
-1. 用户在 子系统 点击`[登录]`按钮
-2. 用户跳转到子系统登录页面,并携带`back参数`记录初始页面URL
-3. 子系统检测到此用户尚未登录,再次将其重定向至SSO认证中心,并携带`redirect参数`记录子系统的登录页URL
-4. 用户在SSO认证中心尚未登录,开始登录
-5. 用户在SSO认证中心登录成功,重定向至子系统的登录页URL,并携带`ticket码`
-6. 子系统使用ticket码从`SSO-Redis`中获取账号id,并在子系统登录此账号会话
-7. 子系统将用户再次重定向至最初始的`back`页面
+1. 用户在 子系统 点击 `[登录]` 按钮。
+2. 用户跳转到子系统登录接口 `/sso/login`,并携带 `back参数` 记录初始页面URL。
+ - 形如:`http://{sso-client}/sso/login?back=xxx`
+3. 子系统检测到此用户尚未登录,再次将其重定向至SSO认证中心,并携带`redirect参数`记录子系统的登录页URL。
+ - 形如:`http://{sso-server}/sso/auth?redirect=xxx?back=xxx`
+4. 用户进入了 SSO认证中心 的登录页面,开始登录。
+5. 用户 输入账号密码 并 登录成功,SSO认证中心再次将用户重定向至子系统的登录接口`/sso/login`,并携带`ticket码`参数。
+ - 形如:`http://{sso-client}/sso/login?back=xxx&ticket=xxxxxxxxx`
+6. 子系统根据 `ticket码` 从 `SSO-Redis` 中获取账号id,并在子系统登录此账号会话。
+7. 子系统将用户再次重定向至最初始的 `back` 页面。
-整个过程,除了第四步用户在SSO认证中心登录时会被打断,其余过程均是自动化的,当用户在另一个子系统再次点击`[登录]`按钮,由于此用户在SSO认证中心已有会话登录,
+整个过程,除了第四步用户在SSO认证中心登录时会被打断,其余过程均是自动化的,当用户在另一个子系统再次点击`[登录]`按钮,由于此用户在SSO认证中心已有会话存在,
所以第四步也将自动化,也就是单点登录的最终目的 —— 一次登录,处处通行。
-下面我们按照步骤依次完成上述过程
+下面我们按照步骤依次完成上述过程:
### 1、准备工作
首先修改hosts文件`(C:\windows\system32\drivers\etc\hosts)`,添加以下IP映射,方便我们进行测试:
@@ -37,12 +40,12 @@
```
-### 2、搭建SSO-Server认证中心
+### 2、搭建 SSO-Server 认证中心
> 搭建示例在官方仓库的 `/sa-token-demo/sa-token-demo-sso2-server/`,如遇到难点可结合源码进行测试学习
-##### 2.1、创建SSO-Server端项目
-创建SpringBoot项目 `sa-token-demo-sso-server`(不会的同学自行百度或参考仓库示例),添加pom依赖:
+#### 2.1、创建 SSO-Server 端项目
+创建 SpringBoot 项目 `sa-token-demo-sso-server`,引入依赖:
``` xml
@@ -52,7 +55,7 @@
${sa.top.version}
-
+
cn.dev33
sa-token-dao-redis-jackson
@@ -64,7 +67,14 @@
```
-##### 2.2、创建SSO-Server端认证接口
+#### 2.2、开放认证接口
+一个完整的SSO认证中心应该至少包含以下接口:
+- `/sso/auth`:单点登录统一认证地址。
+- `/sso/doLogin`:RestAPI 登录接口,根据账号密码进行登录。
+- `/sso/logout`:统一单点注销地址,一次注销,全端下线。
+
+别急,这里不需要你亲自完成这些接口 —— Sa-Token 已经为你封装了实现。你要做的,就是提供一个访问入口,接入 Sa-Token 的方法。
+
``` java
/**
* Sa-Token-SSO Server端 Controller
@@ -111,7 +121,7 @@ public class SsoServerController {
```
注意:在`setDoLoginHandle`函数里如果要获取name, pwd以外的参数,可通过`SaHolder.getRequest().getParam("xxx")`来获取
-##### 2.3、application.yml配置
+#### 2.3、application.yml配置
``` yml
# 端口
server:
@@ -140,7 +150,7 @@ spring:
```
注意点:`allow-url`为了方便测试配置为`*`,线上生产环境一定要配置为详细URL地址 (之后的章节我们会详细阐述此配置项)
-##### 2.4、创建SSO-Server端启动类
+#### 2.4、创建SSO-Server端启动类
``` java
@SpringBootApplication
public class SaSsoServerApplication {
@@ -152,12 +162,12 @@ public class SaSsoServerApplication {
```
-### 3、搭建SSO-Client应用端
+### 3、搭建 SSO-Client 应用端
> 搭建示例在官方仓库的 `/sa-token-demo/sa-token-demo-sso2-client/`,如遇到难点可结合源码进行测试学习
-##### 3.1、创建SSO-Client端项目
-创建一个SpringBoot项目 `sa-token-demo-sso-client`,添加pom依赖:
+#### 3.1、创建SSO-Client端项目
+创建一个 SpringBoot 项目 `sa-token-demo-sso-client`,引入依赖:
``` xml
@@ -186,7 +196,10 @@ public class SaSsoServerApplication {
```
-##### 3.2、创建SSO-Client端认证接口
+#### 3.2、创建 SSO-Client 端认证接口
+
+同 SSO-Server 一样,Sa-Token 为 SSO-Client 端所需代码也提供了完整的封装,你只需提供一个访问入口,接入 Sa-Token 的方法即可。
+
``` java
/**
@@ -195,12 +208,7 @@ public class SaSsoServerApplication {
@RestController
public class SsoClientController {
- /*
- * SSO-Client端:处理所有SSO相关请求
- * http://{host}:{port}/sso/login -- Client端登录地址,接受参数:back=登录后的跳转地址
- * http://{host}:{port}/sso/logout -- Client端单点注销地址(isSlo=true时打开),接受参数:back=注销后的跳转地址
- * http://{host}:{port}/sso/logoutCall -- Client端单点注销回调地址(isSlo=true时打开),此接口为框架回调,开发者无需关心
- */
+ // 首页
@RequestMapping("/")
public String index() {
String str = "Sa-Token SSO-Client 应用端
" +
@@ -210,7 +218,12 @@ public class SsoClientController {
return str;
}
- // SSO-Client端:处理所有SSO相关请求
+ /*
+ * SSO-Client端:处理所有SSO相关请求
+ * http://{host}:{port}/sso/login -- Client端登录地址,接受参数:back=登录后的跳转地址
+ * http://{host}:{port}/sso/logout -- Client端单点注销地址(isSlo=true时打开),接受参数:back=注销后的跳转地址
+ * http://{host}:{port}/sso/logoutCall -- Client端单点注销回调地址(isSlo=true时打开),此接口为框架回调,开发者无需关心
+ */
@RequestMapping("/sso/*")
public Object ssoRequest() {
return SaSsoHandle.clientRequest();
@@ -230,7 +243,7 @@ server:
sa-token:
# SSO-相关配置
sso:
- # SSO-Server端 单点登录地址
+ # SSO-Server端 统一认证地址
auth-url: http://sa-sso-server.com:9000/sso/auth
# 是否打开单点注销接口
is-slo: true
@@ -248,7 +261,7 @@ sa-token:
```
注意点:`sa-token.alone-redis` 的配置需要和SSO-Server端连接同一个Redis(database也要一样)
-##### 3.4、写启动类
+#### 3.4、写启动类
``` java
@SpringBootApplication
public class SaSsoClientApplication {
@@ -263,7 +276,7 @@ public class SaSsoClientApplication {
### 4、测试访问
-(1) 依次启动SSO-Server与SSO-Client端,然后从浏览器访问:[http://sa-sso-client1.com:9001/](http://sa-sso-client1.com:9001/)
+(1) 依次启动 `SSO-Server` 与 `SSO-Client`,然后从浏览器访问:[http://sa-sso-client1.com:9001/](http://sa-sso-client1.com:9001/)
![sso-client-index.png](https://oss.dev33.cn/sa-token/doc/sso/sso-client-index.png 's-w-sh')
diff --git a/sa-token-doc/doc/sso/sso-type3.md b/sa-token-doc/doc/sso/sso-type3.md
index 15a810a4..7de4df27 100644
--- a/sa-token-doc/doc/sso/sso-type3.md
+++ b/sa-token-doc/doc/sso/sso-type3.md
@@ -6,25 +6,27 @@
### 0、问题分析
-我们先来分析一下,当后端不使用共享Redis时,会对架构产生哪些影响
+我们先来分析一下,当后端不使用共享 Redis 时,会对架构产生哪些影响:
-1. Client端 无法直连 Redis 校验 ticket,取出账号id
-2. Client端 无法与 Server端 共用一套会话,需要自行维护子会话
-3. 由于不是一套会话,所以无法“一次注销,全端下线”,需要额外编写代码完成单点注销
+1. Client 端无法直连 Redis 校验 ticket,取出账号id。
+2. Client 端无法与 Server 端共用一套会话,需要自行维护子会话。
+3. 由于不是一套会话,所以无法“一次注销,全端下线”,需要额外编写代码完成单点注销。
所以模式三的主要目标:也就是在 模式二的基础上 解决上述 三个难题
-> 模式三的Demo示例地址:
-> SSO-Server端: `/sa-token-demo/sa-token-demo-sso3-server/` [源码链接](https://gitee.com/dromara/sa-token/tree/dev/sa-token-demo/sa-token-demo-sso3-server)
-> SSO-Client端: `/sa-token-demo/sa-token-demo-sso3-client/` [源码链接](https://gitee.com/dromara/sa-token/tree/dev/sa-token-demo/sa-token-demo-sso3-client)
+> 模式三的 Demo 示例地址:
+>
+> - SSO-Server 端:`/sa-token-demo/sa-token-demo-sso3-server/` [源码链接](https://gitee.com/dromara/sa-token/tree/dev/sa-token-demo/sa-token-demo-sso3-server)
+> - SSO-Client 端:`/sa-token-demo/sa-token-demo-sso3-client/` [源码链接](https://gitee.com/dromara/sa-token/tree/dev/sa-token-demo/sa-token-demo-sso3-client)
+>
> 如遇难点可参考示例
-### 1、SSO-Server认证中心开放ticket校验接口
-既然Client端无法直连Redis校验ticket,那就在Server端开放ticket校验接口,然后Client端通过http请求获取数据
+### 1、SSO-Server 认证中心开放 Ticket 校验接口
+既然 Client 端无法直连 Redis 校验 Ticket,那我们就在 Server 端开放 Ticket 校验接口,然后 Client 端通过 http 请求获取数据。
-##### 1.1、添加依赖
-首先在Server端和Client端均添加以下依赖(如果不需要单点注销功能则Server端可不引入)
+#### 1.1、添加依赖
+首先在 Server 端和 Client 端均添加以下依赖(如果不需要单点注销功能则 Server 端可不引入)
``` xml
@@ -35,8 +37,8 @@
```
> OkHttps是一个轻量级http请求工具,详情参考:[OkHttps](https://gitee.com/ejlchina-zhxu/okhttps)
-##### 1.2、认证中心开放接口
-在SSO-Server端的`application.yml`中,新增以下配置:
+#### 1.2、认证中心开放接口
+在 SSO-Server 端的 `application.yml` 中,新增以下配置:
``` yml
sa-token:
sso:
@@ -45,14 +47,14 @@ sa-token:
```
此配置项的作用是开放ticket校验接口,让Client端通过http请求获取会话
-##### 1.3、Client端新增配置
-在SSO-Client端的`SsoClientController`中,新增以下配置
+#### 1.3、Client端新增配置
+在SSO-Client端的 `SsoClientController` 中,新增以下配置
``` java
// 配置SSO相关参数
@Autowired
private void configSso(SaTokenConfig cfg) {
cfg.sso
- // 配置Http请求处理器
+ // 配置 Http 请求处理器
.setSendHttp(url -> {
return OkHttps.sync(url).get().getBody().toString();
})
@@ -69,15 +71,15 @@ sa-token:
check-ticket-url: http://sa-sso-server.com:9000/sso/checkTicket
```
-##### 1.5 启动项目测试
+#### 1.4、启动项目测试
启动SSO-Server、SSO-Client,访问测试:[http://sa-sso-client1.com:9001/](http://sa-sso-client1.com:9001/)
> 注:如果已测试运行模式二,可先将Redis中的数据清空,以防旧数据对测试造成干扰
-### 2、获取Userinfo
+### 2、获取 Userinfo
除了账号id,我们可能还需要将用户的昵称、头像等信息从 Server端 带到 Client端,即:用户资料的同步。要解决这个需求,我们只需:
-##### 2.1、在Server端自定义接口,查询用户资料
+#### 2.1、在 Server 端自定义接口,查询用户资料
``` java
// 自定义接口:获取userinfo
@RequestMapping("/sso/userinfo")
@@ -96,7 +98,7 @@ public Object userinfo(String loginId, String secretkey) {
}
```
-##### 2.2、在Client端调用此接口查询userinfo
+#### 2.2、在 Client 端调用此接口查询 userinfo
首先在yml中配置接口地址
``` yml
sa-token:
@@ -124,16 +126,18 @@ public Object myinfo() {
有了单点登录就必然要有单点注销,网上给出的大多数解决方案是将注销请求重定向至SSO-Server中心,逐个通知Client端下线
-在某些场景下,页面的跳转可能造成不太好的用户体验,Sa-Token-SSO 允许你以 `REST API` 的形式构建接口,做到页面无刷新单点注销
+在某些场景下,页面的跳转可能造成不太好的用户体验,Sa-Token-SSO 允许你以 `REST API` 的形式构建接口,做到页面无刷新单点注销。
-1. Client端校验ticket的时候将注销回调地址发送到Server端
-2. Server端将注销回调地址存储到Set集合
-3. Client端向Server端发送单点注销请求
-4. Server端遍历Set集合,逐个通知Client端下线
-5. Server端注销下线
-6. 单点注销完成
+1. Client 端在校验 ticket 时,将注销回调地址发送到 Server 端。
+2. Server 端将此 Client 的注销回调地址存储到 Set 集合。
+3. Client 端向 Server 端发送单点注销请求。
+4. Server 端遍历Set集合,逐个通知 Client 端下线。
+5. Server 端注销下线。
+6. 单点注销完成。
-##### 2.1、SSO-Server认证中心增加配置
+这些逻辑 Sa-Token 内部已经封装完毕,你只需按照文章增加以下配置即可:
+
+#### 2.1、SSO-Server认证中心增加配置
在 `SsoServerController` 中新增配置
``` java
// 配置SSO相关参数
@@ -160,9 +164,9 @@ sa-token:
secretkey: kQwIOrYvnXmSDkwEiFngrKidMcdrgKor
```
-##### 2.2、SSO-Client端新增配置
+#### 2.2、SSO-Client 端新增配置
-在 `application.yml` 增加配置:`API调用秘钥` 和 `单点注销接口URL`
+在 `application.yml` 增加配置:`API调用秘钥` 和 `单点注销接口URL`。
``` yml
sa-token:
sso:
@@ -174,21 +178,21 @@ sa-token:
secretkey: kQwIOrYvnXmSDkwEiFngrKidMcdrgKor
```
-##### 2.3 启动测试
+#### 2.3 启动测试
启动SSO-Server、SSO-Client,访问测试:[http://sa-sso-client1.com:9001/](http://sa-sso-client1.com:9001/),
-我们主要的测试点在于 `单点注销`,正常登陆即可
+我们主要的测试点在于 `单点注销`,正常登录即可。
![sso-type3-client-index.png](https://oss.dev33.cn/sa-token/doc/sso/sso-type3-client-index.png 's-w-sh')
-点击 **`[注销]`** 按钮,即可单点注销成功
+点击 **`[注销]`** 按钮,即可单点注销成功。
![sso-type3-slo-index.png](https://oss.dev33.cn/sa-token/doc/sso/sso-type3-slo-index.png 's-w-sh')
-PS:这里我们为了方便演示,使用的是超链接跳页面的形式,正式项目中使用Ajax调用接口即可做到无刷单点登录退出
+PS:这里我们为了方便演示,使用的是超链接跳页面的形式,正式项目中使用 Ajax 调用接口即可做到无刷单点登录退出。
-例如我们使用 [APIPost接口测试工具](https://www.apipost.cn/) 可以做到同样的效果:
+例如,我们使用 [APIPost接口测试工具](https://www.apipost.cn/) 可以做到同样的效果:
![sso-slo-apipost.png](https://oss.dev33.cn/sa-token/doc/sso/sso-slo-apipost.png 's-w-sh')
@@ -198,13 +202,13 @@ PS:这里我们为了方便演示,使用的是超链接跳页面的形式,
### 4、后记
-当我们熟读三种模式的单点登录之后,其实不难发现:所谓单点登录,其本质就是多个系统之间的会话共享
+当我们熟读三种模式的单点登录之后,其实不难发现:所谓单点登录,其本质就是多个系统之间的会话共享。
当我们理解这一点之后,三种模式的工作原理也浮出水面:
-- 模式一:采用共享Cookie来做到前端Token的共享,从而达到后端的Session会话共享
-- 模式二:采用URL重定向,以ticket码为授权中介,做到多个系统间的会话传播
-- 模式三:采用Http请求主动查询会话,做到Client端与Server端的会话同步
+- 模式一:采用共享 Cookie 来做到前端 Token 的共享,从而达到后端的 Session 会话共享。
+- 模式二:采用 URL 重定向,以 ticket 码为授权中介,做到多个系统间的会话传播。
+- 模式三:采用 Http 请求主动查询会话,做到 Client 端与 Server 端的会话同步。
diff --git a/sa-token-doc/doc/up/integ-redis.md b/sa-token-doc/doc/up/integ-redis.md
index f951969b..81db27fd 100644
--- a/sa-token-doc/doc/up/integ-redis.md
+++ b/sa-token-doc/doc/up/integ-redis.md
@@ -82,10 +82,11 @@ spring:
**3. 集成Redis后,是我额外手动保存数据,还是框架自动保存?**
框架自动保存。集成`Redis`只需要引入对应的`pom依赖`即可,框架所有上层API保持不变
+**4. 集成包版本问题**
+Sa-Token-Redis 集成包的版本尽量与 Sa-Token-Starter 集成包的版本一致,否则可能出现兼容性问题
+
-更多框架的集成方案正在更新中... (欢迎大家提交pr)
+更多框架的集成方案正在更新中...
-!> 注意: 集成sa-token-dao-redis的版本需要与sa-token启动依赖版本保持一致, 否则可能会报错(在低版本依赖里面找不到高版本的方法)
-