Sa-Token 实现分布式登录鉴权(轻量级,超简单)
Sa-Token 是一个轻量级Java权限认证框架,它可以实现分布式登录鉴权。以下是一个简单的示例,展示如何使用Sa-Token实现分布式登录鉴权:
- 首先,在你的项目中引入Sa-Token依赖。
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-spring-boot-starter</artifactId>
<version>你的版本号</version>
</dependency>
- 配置Sa-Token,通常在application.yml或application.properties中配置。
# 配置sa-token
sa-token:
# 是否输出操作日志
is-log: false
# 是否执行gson格式化
is-gson-format: false
# token名称 (同时也是cookie名称)
token-name: "satoken"
# token有效期,单位s 默认30天
timeout: 2592000
# token验证类型
token-effect: "global"
# 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录把其他已登录Kick出)
is-concurrent: true
# 配置默认的会话管理方式
session-mode: "redis"
- 配置Redis作为Sa-Token的会话管理存储。
@Configuration
public class SaTokenConfig {
@Bean
public SaTokenDao saTokenDao() {
return new SaTokenDaoRedisImpl();
}
@Bean
public SaTokenAction saTokenAction() {
return new SaTokenActionRedisImpl();
}
}
- 使用Sa-Token提供的API进行登录和鉴权。
// 登录
@RequestMapping("/doLogin")
public String doLogin(String username, String password) {
// 调用Sa-Token的API进行登录
StpUtil.login(username, password);
return "登录成功";
}
// 鉴权注解,只有登录成功才能访问
@SaCheckLogin
@RequestMapping("/test")
public String test() {
return "鉴权成功";
}
在分布式系统中,你需要确保所有服务都使用相同的sa-token
配置,并且所有服务都可以访问相同的Redis实例。这样,用户的登录状态可以在整个系统中共享,实现分布式登录鉴权。
评论已关闭