【微服务】springboot 整合 SA-Token 使用详解
2024-08-24 15:44:07
Spring Boot 整合 Sa-Token 使用详解
Sa-Token 简介
Sa-Token 是一款轻量级Java权限认证框架,主要解决:登录认证、权限认证、单点登录、OAuth2.0、分布式Session会话、微服务网关鉴权等一系列权限相关问题。其设计简洁,易于集成,性能优越。
为什么选择 Sa-Token?
- 轻量级: 无需引入过多的依赖,配置简单。
- 功能全面: 涵盖了权限认证的各个方面。
- 性能优越: 性能表现出色,适用于高并发场景。
- 易于集成: 与 Spring Boot 等主流框架集成方便。
集成步骤
1. 引入依赖
在你的 Spring Boot 项目的 pom.xml
文件中添加 Sa-Token 依赖:
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-spring-boot-starter</artifactId>
<version>1.32.0</version> </dependency >
2. 配置 Sa-Token
在你的 Spring Boot 配置类中配置 Sa-Token:
Java
@Configuration
public class SaTokenConfig {
@Bean
public SaTokenConfigure saTokenConfigure() {
return new SaTokenConfigure() {
// ... 自定义配置
};
}
}
3. 登录认证
Java
@RestController
@RequestMapping("/login")
public class LoginController {
@Autowired
private SaTokenManager saTokenManager;
@PostMapping
public Result login(@RequestBody LoginDto dto) {
// 校验用户名密码
if (!UserService.checkUser(dto.getUsername(), dto.getPassword())) {
return Result.fail("账号或密码错误");
}
// 登录成功,生成token
String token = saTokenManager.createToken(dto.getUsername());
return Result.success("登录成功", token);
}
}
4. 权限认证
- 注解式鉴权: Java
@RestController @RequestMapping("/admin") public class AdminController { @SaCheckPermission("admin:user:add") @PostMapping("/user/add") public Result addUser() { // ... } }
- 路由拦截式鉴权: Java
@Configuration public class SaTokenConfigure implements SaTokenConfigure { @Override public void setInterceptor(SaInterceptor interceptor) { interceptor.addInterceptor(new SaRouteInterceptor() .addInclude("/admin/**") // 需要认证的路径 .addExclude("/user/login") // 无需认证的路径 ); } }
进阶用法
- 角色认证: Java
@SaCheckRole("admin") public Result adminOnly() { // ... }
- 自定义认证逻辑: Java
@SaCheckPermission("custom") public Result customCheck() { // 自定义认证逻辑 return Result.success(); }
- 分布式Session: Sa-Token 支持 Redis、数据库等方式实现分布式 Session。
- 单点登录: Sa-Token 提供了 SSO 的解决方案。
注意事项
- Token 安全: Token 应妥善保管,避免泄露。
- 性能优化: 在高并发场景下,可以考虑使用缓存等技术优化性能。
- 异常处理: 对于认证失败等异常情况,需要进行适当的处理。
总结
Sa-Token 是一个功能强大、易于使用的权限认证框架,可以帮助开发者快速构建安全的 Web 应用。通过本文的介绍,你应该能够掌握 Sa-Token 的基本用法,并将其应用到你的 Spring Boot 项目中。
更多详细的用法和示例,请参考官方文档: https://sa-token.cc/doc.html
如果你有以下问题,欢迎提出:
- 如何实现自定义的认证逻辑?
- 如何配置分布式 Session?
- 如何解决 Token 泄露的问题?
- Sa-Token 与其他权限框架的对比?
我会尽力为你解答。