From 4c35f9e936f6b99209f25fee80f8f99b6ba30424 Mon Sep 17 00:00:00 2001 From: click33 <2393584716@qq.com> Date: Wed, 30 Aug 2023 11:26:27 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B8=B8=E8=A7=81=E9=97=AE=E7=AD=94=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E6=96=B0=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sa-token-doc/micro/same-token.md | 3 +++ sa-token-doc/more/common-questions.md | 33 +++++++++++++++++++++++++++ sa-token-doc/static/is-star-plugin.js | 4 +++- sa-token-doc/up/token-style.md | 1 + 4 files changed, 40 insertions(+), 1 deletion(-) diff --git a/sa-token-doc/micro/same-token.md b/sa-token-doc/micro/same-token.md index 9c3558e8..a387f345 100644 --- a/sa-token-doc/micro/same-token.md +++ b/sa-token-doc/micro/same-token.md @@ -163,6 +163,9 @@ public class FeignInterceptor implements RequestInterceptor { @Override public void apply(RequestTemplate requestTemplate) { requestTemplate.header(SaSameUtil.SAME_TOKEN, SaSameUtil.getToken()); + + // 如果希望被调用方有会话状态,此处就还需要将 satoken 添加到请求头中 + // requestTemplate.header(StpUtil.getTokenName(), StpUtil.getTokenValue()); } } ``` diff --git a/sa-token-doc/more/common-questions.md b/sa-token-doc/more/common-questions.md index 2d50e2c6..e8e2e29e 100644 --- a/sa-token-doc/more/common-questions.md +++ b/sa-token-doc/more/common-questions.md @@ -623,6 +623,39 @@ So:从鉴权粒度的角度来看,需要针对一个模块鉴权的时候, 所以只能统一抛出-2,这个行为也和具体使用的 SaTokenDao 有关联,例如集成 sa-token-jwt 插件后,框架就能分辨出来是 token 过期了,抛出-3。 +### Q:Sa-Token 是否提供类似 RefreshToken 的概念,与 AccessToken 相互配合刷新令牌鉴权。 +关于长短 token,Sa-Token 没有提供直接的 API 支持,但是你可以利用 “临时 token 认证模块” 轻易的达到这一点: + +1. 把 `sa-token.timeout` 的值配置小一点,然后把 `StpUtil.login(10001)` 生成的 token 作为短 token ,用来鉴权。 +2. 用 “临时 token 认证模块” 生成长 token, `String refreshToken = SaTempUtil.createToken(10001, 2592000);`。 +3. 把这两个 token 一起返回到前端。 +4. 你再开个接口,可以让前端通过长 token,刷新短 token,参考代码: + +``` java +@RequestMapping("/refreshToken") +public SaResult refreshToken(String refreshToken) { + // 1、验证 + Object userId = SaTempUtil.parseToken(refreshToken); + if(userId == null) { + return SaResult.error("无效 refreshToken"); + } + + // 2、为其生成新的短 token + String accessToken = StpUtil.createLoginSession(userId); + + // 3、返回 + return SaResult.data(accessToken); +} +``` + + +### Q:怎么改变请求返回的 http 状态码? +``` java +SaHolder.getResponse().setStatus(401) +``` + + + ### Q:还是有不明白到的地方? 请在`gitee` 、 `github` 提交 `issues`,或者加入qq群交流,[群链接](/more/join-group) diff --git a/sa-token-doc/static/is-star-plugin.js b/sa-token-doc/static/is-star-plugin.js index e3344bab..f56d82c9 100644 --- a/sa-token-doc/static/is-star-plugin.js +++ b/sa-token-doc/static/is-star-plugin.js @@ -34,7 +34,7 @@ const docDomain = 'sa-token.cc'; // const docDomain = '127.0.0.1:8848'; // 检查成功后,多少天不再检查 -const allowDisparity = 1000 * 60 * 60 * 24 * 30; +const allowDisparity = 1000 * 60 * 60 * 24 * 30 * 3; // const allowDisparity = 1000 * 10; @@ -126,6 +126,8 @@ function confirmStar() { goAuth(); } ); + + // 源码注释提示 const closeLayer = `