satoken
简介:Sa-Token 是一个轻量级 Java 权限认证框架,主要解决:登录认证、权限认证、单点登录、OAuth2.0、分布式Session会话、微服务网关鉴权 等一系列权限相关问题。
SpringBoot集成sa-token
添加依赖:
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-spring-boot-starter</artifactId>
<version>1.39.0</version>
</dependency>
注:如果你使用的是 SpringBoot 3.x,只需要将 sa-token-spring-boot-starter
修改为 sa-token-spring-boot3-starter
即可。
application.yml配置:
sa-token:
# token 名称(同时也是 cookie 名称)
token-name: satoken
# token 有效期(单位:秒) 默认30天,-1 代表永久有效
timeout: 2592000
# token 最低活跃频率(单位:秒),如果 token 超过此时间没有访问系统就会被冻结,默认-1 代表不限制,永不冻结
active-timeout: -1
# 是否允许同一账号多地同时登录 (为 true 时允许一起登录, 为 false 时新登录挤掉旧登录)
is-concurrent: true
# 在多人登录同一账号时,是否共用一个 token (为 true 时所有登录共用一个 token, 为 false 时每次登录新建一个 token)
is-share: true
# token 风格(默认可取值:uuid、simple-uuid、random-32、random-64、random-128、tik)
token-style: uuid
# 是否输出操作日志
is-log: true
创建DemoControler.java
public class UserController {
public String doLogin(String username, String password) {
// 此处仅作模拟示例,真实项目需要从数据库中查询数据进行比对
if ("zhang".equals(username) && "123456".equals(password)) {
StpUtil.login(10001); // 用户Id
// 登录成功返回前端token信息
SaTokenInfo tokenInfo = StpUtil.getTokenInfo();
System.out.println("token名称:" + tokenInfo.getTokenName());
System.out.println("token值:" + tokenInfo.getTokenValue());
return "登录成功";
}
return "登录失败";
}
public String isLogin() {
return "当前会话是否登录:" + StpUtil.isLogin();
}
// 测试添加权限
public String add(){
return "用户添加";
}
// 测试删除权限
public String delete(){
System.out.println("用户删除");
return "用户删除";
}
}
测试:
登录:
http://127.0.0.1:8080/user/doLogin?username=zhang&password=123456
验证登录:
http://127.0.0.1:8080/user/isLogin
验证用户添加和删除的权限,需要增加拦截器配置:
注意:如果没有下面的配置,权限不起作用
SptInterfaceImpl.java
// 实现角色权限认证
public class SptInterfaceImpl implements StpInterface {
public List<String> getPermissionList(Object loginId, String loginType) {
List<String> list = new ArrayList<String>();
list.add("user:add");
list.add("user:update");
list.add("user:get");
// list.add("user:delete");
list.add("art.*");
return list;
}
// 该账号拥有的角色标识集合
public List<String> getRoleList(Object loginId, String loginType) {
List<String> list = new ArrayList<String>();
list.add("admin");
list.add("super-admin");
return list;
}
}
SatokenConfig.java
public class SatokenConfig implements WebMvcConfigurer{
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new SaInterceptor()).addPathPatterns("/**");
}
}
验证接口权限:
http://127.0.0.1:8080/user/add
添加接口可以访问
http://127.0.0.1:8080/user/delete
删除接口没有权限,因为// list.add("user:delete");
注释了,放开再次测试,有接口访问权限。
版权声明:本博客所有文章除特殊声明外,转载请注明出处 Mr Xue的博客!