SaToken
在 ruoyi
模块中锁定版本,在 ruoyi-common
模块中添加 sa-token
依赖
<!-- Sa-Token 权限认证,在线文档:http://sa-token.dev33.cn/ -->
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-spring-boot-starter</artifactId>
<version>1.31.0</version>
</dependency>
<!-- Sa-Token 整合 Redis (使用 jackson 序列化方式) -->
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-dao-redis-jackson</artifactId>
<version>1.31.0</version>
</dependency>
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# 门户网站登录
# 放行资源交给SaToken处理
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring()
.antMatchers("/api/**");
}
1
2
3
4
5
2
3
4
5
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(repeatSubmitInterceptor).addPathPatterns("/**");
// 注册 Sa-Token 拦截器,校验规则为 StpUtil.checkLogin() 登录校验。
registry.addInterceptor(new SaInterceptor(handle -> StpUtil.checkLogin()))
.addPathPatterns("/api/**")
.excludePathPatterns("/api/auth/**");
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 提供接口给第三方系统
通用参考:鉴权认证机制 | 百度AI开放平台 (opens new window)
在线文档:OAuth2-Server搭建 (opens new window)
# 开启客户端模式
# Sa-Token 配置
sa-token:
token-name: satoken-server
# OAuth2.0 配置
oauth2:
# 是否打开模式:授权码
is-code: false
# 是否打开模式:凭证式
is-client: true
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 放行资源交给SaToken处理
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring()
.antMatchers("/oauth2/**", "/rest2/**");
}
1
2
3
4
5
2
3
4
5
/**
* 自定义拦截规则
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(repeatSubmitInterceptor).addPathPatterns("/**");
// 注册 Sa-Token 拦截器,校验规则为 StpUtil.checkLogin() 登录校验。
registry.addInterceptor(new SaInterceptor(handle -> {
String access_token = SpringMVCUtil.getRequest().getParameter("access_token");
SaOAuth2Util.checkClientToken(access_token);
})).addPathPatterns("/rest2/**");
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# 提供测试接口
@RestController
@RequestMapping("/rest2/test")
public class Rest2TestController {
@GetMapping("/hello")
public AjaxResult hello() {
return AjaxResult.success();
}
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 测试功能
获取 Access Token:http://127.0.0.1:8080/oauth2/client_token?grant_type=client_credentials&client_id=1001&client_secret=aaaa-bbbb-cccc-dddd-eeee
访问资源:http://127.0.0.1:8080/rest2/test/hello?access_token=blVac7tBBPPvZFOVlSAsuDyw8rgBx9ljvRlqfh9oQMoPfNCZPu4IlwZ0DBmw
编辑 (opens new window)
上次更新: 2025-01-11 19:08:58
← MyBatisPlus 常见问题→