【微服务】springboot 整合 SA-Token 使用详解
Sa-Token 是一款轻量级Java权限认证框架,主要解决:登录认证、权限认证、单点登录、OAuth2.0、分布式Session会话、微服务网关鉴权等一系列权限相关问题。其设计简洁,易于集成,性能优越。
在你的 Spring Boot 项目的 pom.xml
文件中添加 Sa-Token 依赖:
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-spring-boot-starter</artifactId>
<version>1.32.0</version> </dependency >
在你的 Spring Boot 配置类中配置 Sa-Token:
Java
@Configuration
public class SaTokenConfig {
@Bean
public SaTokenConfigure saTokenConfigure() {
return new SaTokenConfigure() {
// ... 自定义配置
};
}
}
@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);
}
}
@RestController
@RequestMapping("/admin")
public class AdminController {
@SaCheckPermission("admin:user:add")
@PostMapping("/user/add")
public Result addUser() {
// ...
}
}
@Configuration
public class SaTokenConfigure implements SaTokenConfigure {
@Override
public void setInterceptor(SaInterceptor interceptor) {
interceptor.addInterceptor(new SaRouteInterceptor()
.addInclude("/admin/**") // 需要认证的路径
.addExclude("/user/login") // 无需认证的路径
);
}
}
@SaCheckRole("admin")
public Result adminOnly() {
// ...
}
@SaCheckPermission("custom")
public Result customCheck() {
// 自定义认证逻辑
return Result.success();
}
Sa-Token 是一个功能强大、易于使用的权限认证框架,可以帮助开发者快速构建安全的 Web 应用。通过本文的介绍,你应该能够掌握 Sa-Token 的基本用法,并将其应用到你的 Spring Boot 项目中。
更多详细的用法和示例,请参考官方文档: https://sa-token.cc/doc.html
如果你有以下问题,欢迎提出:
我会尽力为你解答。