SaRouterUtil迁移到core核心包,优化依赖架构

This commit is contained in:
shengzhang
2021-03-22 17:02:09 +08:00
parent 36afaf74d3
commit c574e7f8d7
15 changed files with 126 additions and 281 deletions

View File

@@ -17,6 +17,7 @@
- [注解式鉴权](/use/at-check)
- [路由拦截式鉴权](/use/route-check)
- [花式token](/use/token-style)
- [Token前缀](/use/token-prefix)
- [框架配置](/use/config)
- [会话治理](/use/search-session)
- [记住我模式](/use/remember-me)

View File

@@ -71,4 +71,5 @@ public class MySaTokenConfig {
| dataRefreshPeriod | int | 30 | 默认dao层实现类中每次清理过期数据间隔的时间 (单位: 秒) 默认值30秒设置为-1代表不启动定时清理 |
| tokenSessionCheckLogin | Boolean | true | 获取token专属session时是否必须登录 (如果配置为true会在每次获取token专属session时校验是否登录) |
| autoRenew | Boolean | true | 是否打开自动续签 (如果此值为true, 框架会在每次直接或间接调用getLoginId()时进行一次过期检查与续签操作) |
| tokenPrefix | Boolean | true | token前缀, 格式样例(satoken: Bearer xxxx-xxxx-xxxx-xxxx) [参考token前缀](/use/token-prefix) |
| isV | Boolean | true | 是否在初始化配置时打印版本字符画 |

View File

@@ -99,8 +99,18 @@ public class MySaTokenConfig implements WebMvcConfigurer {
## 注意事项
在`v1.14`及以前版本下,路由拦截器提供了提供了封装式写法,该方法代码比较冗余,在`v1.15`版本已移除,解决方案如下:
``` java
// 原写法
registry.addInterceptor(SaRouteInterceptor.createPermissionVal("user")).addPathPatterns("/user/**");
// 改为以下方式,效果同上
registry.addInterceptor(new SaRouteInterceptor((request, response, handler) -> {
SaRouterUtil.match("/user/**", () -> StpUtil.checkPermission("user"));
})).addPathPatterns("/**");
```

View File

@@ -0,0 +1,32 @@
# Token前缀
### 需求场景
在某些系统中前端提交token时会在前面加个固定的前缀例如
``` js
{
"satoken": "Bearer xxxx-xxxx-xxxx-xxxx"
}
```
此时后端如果不做任何特殊处理,框架将会把`Bearer `视为token的一部分无法正常读取token信息导致鉴权失败
为此我们需要在yml中添加如下配置
``` java
spring:
# sa-token配置
sa-token:
# token前缀
tokenPrefix: Bearer
```
此时 sa-token 便可在读取token时裁剪掉 `Bearer`,成功获取`xxxx-xxxx-xxxx-xxxx`
### 注意点
1. `token前缀` 与 `token值` 之间必须有一个空格
2. 一旦配置了`token前缀`则前端提交token时必须带有前缀否则会导致框架无法读取token
3. 由于`Cookie`中无法存储空格字符也就意味配置token前缀后`Cookie`鉴权方式将会失效此时只能将token提交到`header`里进行传输