Sa-Token 是一个轻量级 Java 权限认证框架,主要解决:登录认证、权限认证、单点登录、OAuth2.0、分布式Session会话、微服务网关鉴权 等一系列权限相关问题。
Sa-Token 旨在以简单、优雅的方式完成系统的权限认证部分.
访问官网:
导包
<dependency> <groupId>cn.dev33</groupId> <artifactId>sa-token-spring-boot-starter</artifactId> <version>1.37.0</version> </dependency>
|
Yml
server: port: 8081
sa-token: token-name: satoken timeout: 2592000 active-timeout: -1 is-concurrent: true is-share: true token-style: uuid is-log: true
|
测试类
@RestController @RequestMapping("/acc/") public class LoginController {
@RequestMapping("doLogin") public SaResult doLogin(String name, String pwd) { if("zhang".equals(name) && "123456".equals(pwd)) { StpUtil.login(10001); return SaResult.ok("登录成功"); } return SaResult.error("登录失败"); }
@RequestMapping("isLogin") public SaResult isLogin() { return SaResult.ok("是否登录:" + StpUtil.isLogin()); } @RequestMapping("tokenInfo") public SaResult tokenInfo() { return SaResult.data(StpUtil.getTokenInfo()); } @RequestMapping("logout") public SaResult logout() { StpUtil.logout(); return SaResult.ok(); } }
|
注解鉴权
注册拦截器
@Configuration public class SaTokenConfigure implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new SaInterceptor()).addPathPatterns("/**"); } }
|
使用注解鉴权
@SaCheckLogin @RequestMapping("info") public String info() { return "查询用户信息"; }
@SaCheckRole("super-admin") @RequestMapping("add") public String add() { return "用户增加"; }
@SaCheckPermission("user-add") @RequestMapping("add") public String add() { return "用户增加"; }
@SaCheckSafe() @RequestMapping("add") public String add() { return "用户增加"; }
@SaCheckBasic(account = "sa:123456") @RequestMapping("add") public String add() { return "用户增加"; }
@SaCheckDisable("comment") @RequestMapping("send") public String send() { return "查询用户信息"; }
|
路由拦截器
注册 Sa-Token 路由拦截器
@Configuration public class SaTokenConfigure implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new SaInterceptor(handle -> StpUtil.checkLogin())) .addPathPatterns("/**") .excludePathPatterns("/user/doLogin"); } }
|
@Configuration public class SaTokenConfigure implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new SaInterceptor(handler -> { SaRouter .match("/**") .notMatch("/user/doLogin") .check(r -> StpUtil.checkLogin()); SaRouter.match("/user/**", r -> StpUtil.checkPermission("user")); SaRouter.match("/admin/**", r -> StpUtil.checkPermission("admin")); SaRouter.match("/goods/**", r -> StpUtil.checkPermission("goods")); SaRouter.match("/orders/**", r -> StpUtil.checkPermission("orders")); SaRouter.match("/notice/**", r -> StpUtil.checkPermission("notice")); SaRouter.match("/comment/**", r -> StpUtil.checkPermission("comment")); })).addPathPatterns("/**"); } }
|