在Spring Cloud环境中使用Sa-Token和Redis进行登录验证,你需要做以下几步:
- 引入相关依赖:
<!-- Sa-Token 依赖 -->
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-spring-boot-starter</artifactId>
<version>你的版本号</version>
</dependency>
<!-- Redis 依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
- 配置Sa-Token和Redis:
# Sa-Token 配置
sa-token:
token-name: Authorization
timeout: 2592000 # 过期时间,单位秒
activity-timeout: -1 # 活跃认证时间(-1代表永不过期)
is-concurrent: false # 是否允许同一账号并发登录(为true时允许一起登录,为false时新登录把其他登录Kick下线)
header: Authorization # 请求头header名称
token-prefix: satoken:login: # 令牌前缀
# Redis 配置
spring:
redis:
host: 你的Redis地址
port: 6379
password: 你的Redis密码
database: 0
timeout: 6000
- 配置Sa-Token与Spring Cloud集成:
@Configuration
public class SaTokenConfig {
@Bean
public SaTokenInterceptor getSaTokenInterceptor() {
return new SaTokenInterceptor();
}
}
- 创建登录接口并使用Sa-Token提供的API进行验证:
@RestController
public class LoginController {
@Autowired
private SaTokenService saTokenService;
@PostMapping("/login")
public ResponseEntity<?> login(@RequestParam("username") String username, @RequestParam("password") String password) {
// 这里的逻辑应该是校验用户名密码是否正确,正确则登录成功
// 登录成功后使用Sa-Token提供的API创建token
StpUtil.login(username, password);
return ResponseEntity.ok("登录成功");
}
@GetMapping("/logout")
public ResponseEntity<?> logout() {
// 登出当前会话
StpUtil.logout();
return ResponseEntity.ok("登出成功");
}
// 其他接口可以使用Sa-Token提供的拦截器自动检查登录状态
}
- 其他需要验证登录的接口,可以使用Sa-Token提供的拦截器自动检查登录状态:
@RestController
@RequestMapping("/user")
public class UserController {
// 这里的方法在没有登录或者token失效时会返回401错误
}
以上代码提供了一个简单的登录接口和登出接口,并展示了如何在Spring Cloud环境中使用Sa-Token和Redis进行登录验证。在实际应用中,你需要根据自己的业务需求进行相应的逻辑扩展和错误处理。