Satoken+Redis实现短信登录、注册、鉴权_sa-token redis
在使用Sa-Token进行短信登录、注册以及鉴权时,可以结合Redis来存储短信验证码以及用户会话信息,以下是一个简化的示例代码:
首先,需要添加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的集成:
@Configuration
public class SaTokenConfig {
@Bean
public SaTokenAction saTokenAction() {
return new SaTokenActionRedis(); // 使用Redis作为存储方式
}
}
接下来,实现短信登录和注册的接口:
@RestController
public class MessageController {
// 发送短信验证码接口
@PostMapping("/send-message")
public Response sendMessage(@RequestParam("phone") String phone) {
// 生成验证码并保存至Redis
String code = RandomUtil.randomNumbers(6);
SaTokenRedisUtil.set(SaTokenRedisKeyBuild.smsCodeKey(phone), code, 1000 * 60 * 5); // 有效期5分钟
// 模拟发送短信操作
// sendSms(phone, code);
return Response.success("短信发送成功");
}
// 短信登录接口
@PostMapping("/sms-login")
public Response smsLogin(@RequestParam("phone") String phone, @RequestParam("code") String code) {
// 从Redis获取验证码并校验
String cacheCode = SaTokenRedisUtil.get(SaTokenRedisKeyBuild.smsCodeKey(phone));
if (!code.equals(cacheCode)) {
return Response.error("验证码错误");
}
// 登录成功,创建会话
StpUtil.login(phone); // 更多StpUtil方法参考Sa-Token官方文档
return Response.success("登录成功");
}
// 短信注册接口
@PostMapping("/sms-register")
public Response smsRegister(@RequestParam("phone") String phone, @RequestParam("code") String code) {
// 验证码校验同登录接口
// ...
// 注册用户
int userId = StpUtil.getLoginIdAsInt(); // 假设用户ID是自增的,实际应用中需要根据业务逻辑生成
// 保存用户信息至数据库等操作
// saveUser(userId, phone);
return Response.success("注册成功");
}
}
以上代码提供了短信验证码的发送、登录和注册接口,并使用Redis来存储验证码和会话信息。在实际应用中,你需要根据自己的业务逻辑来扩展这些接口,比如集成短信服务提供商的API,处理用户信息的存储等。
评论已关闭