常见问答增加新问题

This commit is contained in:
click33 2023-08-30 11:26:27 +08:00
parent d59b27cc66
commit 4c35f9e936
4 changed files with 40 additions and 1 deletions

View File

@ -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());
}
}
```

View File

@ -623,6 +623,39 @@ So从鉴权粒度的角度来看需要针对一个模块鉴权的时候
所以只能统一抛出-2这个行为也和具体使用的 SaTokenDao 有关联,例如集成 sa-token-jwt 插件后,框架就能分辨出来是 token 过期了,抛出-3。
### QSa-Token 是否提供类似 RefreshToken 的概念,与 AccessToken 相互配合刷新令牌鉴权。
关于长短 tokenSa-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)

View File

@ -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 =
`
<!--

View File

@ -63,4 +63,5 @@ public class SaTokenConfigure {
gfuPSwZsnUhwgz08GTCH4wOgasWtc3odP4HLwXJ7NDGOximTvT4OlW19zeLH
```
!> **更改了 token 生成策略但是不生效?**<br> 把 Redis 中的旧数据清除掉再试试