From 8ad2e3db9692976bdf43906c6f7b11a0798490aa Mon Sep 17 00:00:00 2001 From: click33 <2393584716@qq.com> Date: Fri, 5 Nov 2021 18:55:14 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=B8=B8=E8=A7=81=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 28 +++++++++++------------ sa-token-doc/doc/README.md | 28 +++++++++++------------ sa-token-doc/doc/more/common-questions.md | 19 +++++++++++---- 3 files changed, 43 insertions(+), 32 deletions(-) diff --git a/README.md b/README.md index f17bf5a8..c514e663 100644 --- a/README.md +++ b/README.md @@ -68,21 +68,21 @@ StpUtil.kickout(10001); 在 Sa-Token 中,绝大多数功能都可以 **一行代码** 完成: ``` java -StpUtil.login(10001); // 标记当前会话登录的账号id -StpUtil.getLoginId(); // 获取当前会话登录的账号id -StpUtil.isLogin(); // 获取当前会话是否已经登录, 返回true或false -StpUtil.logout(); // 当前会话注销登录 -StpUtil.kickout(10001); // 将账号为10001的会话踢下线 -StpUtil.hasRole("super-admin"); // 查询当前账号是否含有指定角色标识, 返回true或false -StpUtil.hasPermission("user:add"); // 查询当前账号是否含有指定权限, 返回true或false -StpUtil.getSession(); // 获取当前账号id的Session -StpUtil.getSessionByLoginId(10001); // 获取账号id为10001的Session +StpUtil.login(10001); // 标记当前会话登录的账号id +StpUtil.getLoginId(); // 获取当前会话登录的账号id +StpUtil.isLogin(); // 获取当前会话是否已经登录, 返回true或false +StpUtil.logout(); // 当前会话注销登录 +StpUtil.kickout(10001); // 将账号为10001的会话踢下线 +StpUtil.hasRole("super-admin"); // 查询当前账号是否含有指定角色标识, 返回true或false +StpUtil.hasPermission("user:add"); // 查询当前账号是否含有指定权限, 返回true或false +StpUtil.getSession(); // 获取当前账号id的Session +StpUtil.getSessionByLoginId(10001); // 获取账号id为10001的Session StpUtil.getTokenValueByLoginId(10001); // 获取账号id为10001的token令牌值 -StpUtil.login(10001, "PC"); // 指定设备标识登录,常用于“同端互斥登录” -StpUtil.kickout(10001, "PC"); // 指定账号指定设备标识踢下线 (不同端不受影响) -StpUtil.openSafe(120); // 在当前会话开启二级认证,有效期为120秒 -StpUtil.checkSafe(); // 校验当前会话是否处于二级认证有效期内,校验失败会抛出异常 -StpUtil.switchTo(10044); // 将当前会话身份临时切换为其它账号 +StpUtil.login(10001, "PC"); // 指定设备标识登录,常用于“同端互斥登录” +StpUtil.kickout(10001, "PC"); // 指定账号指定设备标识踢下线 (不同端不受影响) +StpUtil.openSafe(120); // 在当前会话开启二级认证,有效期为120秒 +StpUtil.checkSafe(); // 校验当前会话是否处于二级认证有效期内,校验失败会抛出异常 +StpUtil.switchTo(10044); // 将当前会话身份临时切换为其它账号 ``` 即使不运行测试,相信您也能意会到绝大多数 API 的用法。 diff --git a/sa-token-doc/doc/README.md b/sa-token-doc/doc/README.md index c4e66964..4e69503f 100644 --- a/sa-token-doc/doc/README.md +++ b/sa-token-doc/doc/README.md @@ -64,21 +64,21 @@ StpUtil.kickout(10001); 在 Sa-Token 中,绝大多数功能都可以 **一行代码** 完成: ``` java -StpUtil.login(10001); // 标记当前会话登录的账号id -StpUtil.getLoginId(); // 获取当前会话登录的账号id -StpUtil.isLogin(); // 获取当前会话是否已经登录, 返回true或false -StpUtil.logout(); // 当前会话注销登录 -StpUtil.kickout(10001); // 将账号为10001的会话踢下线 -StpUtil.hasRole("super-admin"); // 查询当前账号是否含有指定角色标识, 返回true或false -StpUtil.hasPermission("user:add"); // 查询当前账号是否含有指定权限, 返回true或false -StpUtil.getSession(); // 获取当前账号id的Session -StpUtil.getSessionByLoginId(10001); // 获取账号id为10001的Session +StpUtil.login(10001); // 标记当前会话登录的账号id +StpUtil.getLoginId(); // 获取当前会话登录的账号id +StpUtil.isLogin(); // 获取当前会话是否已经登录, 返回true或false +StpUtil.logout(); // 当前会话注销登录 +StpUtil.kickout(10001); // 将账号为10001的会话踢下线 +StpUtil.hasRole("super-admin"); // 查询当前账号是否含有指定角色标识, 返回true或false +StpUtil.hasPermission("user:add"); // 查询当前账号是否含有指定权限, 返回true或false +StpUtil.getSession(); // 获取当前账号id的Session +StpUtil.getSessionByLoginId(10001); // 获取账号id为10001的Session StpUtil.getTokenValueByLoginId(10001); // 获取账号id为10001的token令牌值 -StpUtil.login(10001, "PC"); // 指定设备标识登录,常用于“同端互斥登录” -StpUtil.kickout(10001, "PC"); // 指定账号指定设备标识踢下线 (不同端不受影响) -StpUtil.openSafe(120); // 在当前会话开启二级认证,有效期为120秒 -StpUtil.checkSafe(); // 校验当前会话是否处于二级认证有效期内,校验失败会抛出异常 -StpUtil.switchTo(10044); // 将当前会话身份临时切换为其它账号 +StpUtil.login(10001, "PC"); // 指定设备标识登录,常用于“同端互斥登录” +StpUtil.kickout(10001, "PC"); // 指定账号指定设备标识踢下线 (不同端不受影响) +StpUtil.openSafe(120); // 在当前会话开启二级认证,有效期为120秒 +StpUtil.checkSafe(); // 校验当前会话是否处于二级认证有效期内,校验失败会抛出异常 +StpUtil.switchTo(10044); // 将当前会话身份临时切换为其它账号 ``` 即使不运行测试,相信您也能意会到绝大多数 API 的用法。 diff --git a/sa-token-doc/doc/more/common-questions.md b/sa-token-doc/doc/more/common-questions.md index b08b6249..2b606db3 100644 --- a/sa-token-doc/doc/more/common-questions.md +++ b/sa-token-doc/doc/more/common-questions.md @@ -56,7 +56,9 @@ ### Springboot环境下采用自定义拦截器排除了某个路径仍然被拦截了? -可能是404了,SpringBoot环境下如果访问接口404后,会被转发到`/error`,然后被再次拦截,如果是其它原因,欢迎加群反馈 +可能是404了,SpringBoot环境下如果访问接口404后,会被转发到`/error`,然后被再次拦截。 + +如果不是404,可以先打印一下访问的路由,因为后端拦截的未必是你前端访问的这个path,先获取到具体path再仔细分析。 ### 我配置了 active-timeout 值,但是当我每次续签时 Redis 中的 ttl 并没有更新,是不是 bug 了? @@ -64,15 +66,24 @@ 每次验签时用:当前时间 - 时间戳 > active-timeout,来判断这个 Token 是否已经超时 -### 集成 jwt 后为什么在 getSession 时提示 jwt has not session ? -jwt 的招牌便是无须借助服务端完成会话管理,如果集成`jwt`后再使用`Session`功能,那将又回到了传统`Session`模式,属于自断招牌,此种技术组合没有意义, -因此jwt集成模式不提供`Session`功能,如果需要`Session`功能,就不要集成`jwt` +### 集成 Redis 后,明明 Redis 中有值,却还是提示无效Token? +根据以往的处理经验,发生这种情况 90% 的概率是因为你找错了Redis,即:代码连接的Redis和你用管理工具看到的Redis并不是同一个。 + +你可能会问:我看配置文件明明是同一个啊? + +我的回答是:别光看配置文件,不一定准确,在启动时直接执行 `SaManager.getSaTokenDao().set("name", "value", 100000);`, +随便写入一个值,看看能不能根据你的预期写进这个Redis,如果能的才能证明 Redis 连接没问题,再进行下一步排查。 ### 整合 Redis 时先选择了默认jdk序列化,后又改成 jackson 序列化,程序开始报错,SerializationException? 两者的序列化算法不一致导致的反序列化失败,如果要更改序列化方式,则需要先将 Redis 中历史数据清除,再做更新 +### 集成 jwt 后为什么在 getSession 时提示 jwt has not session ? +jwt 的招牌便是无须借助服务端完成会话管理,如果集成`jwt`后再使用`Session`功能,那将又回到了传统`Session`模式,属于自断招牌,此种技术组合没有意义, +因此jwt集成模式不提供`Session`功能,如果需要`Session`功能,就不要集成`jwt` + + ### 我加了 Sa-Token 的全局过滤器,浏览器报错跨域了怎么办? 参考:[https://blog.csdn.net/shengzhang_/article/details/119928794](https://blog.csdn.net/shengzhang_/article/details/119928794)