目录

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

# 门户网站登录

# 放行资源交给SaToken处理

@Override
public void configure(WebSecurity web) throws Exception {
    web.ignoring()
            .antMatchers("/api/**");
}
1
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

# 提供接口给第三方系统

通用参考:鉴权认证机制 | 百度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

# 放行资源交给SaToken处理

@Override
public void configure(WebSecurity web) throws Exception {
    web.ignoring()
            .antMatchers("/oauth2/**", "/rest2/**");
}
1
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

# 提供测试接口

@RestController
@RequestMapping("/rest2/test")
public class Rest2TestController {
    @GetMapping("/hello")
    public AjaxResult hello() {
        return AjaxResult.success();
    }
}
1
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

上次更新: 2022-10-28 22:23:08