
个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~
个人主页:.29.的博客
学习社区:进去逛一逛~
②手机验证码登录功能:Redis实现session共享
存在session共享问题的 HttpSession实现方式 在上一篇文章:
①实现基于session的登录流程:发送验证码、登录注册、校验登陆状态-优快云博客
🚀手机验证码登录 实现流程
- 当注册完成后,用户输入手机号与验证码点击登录,后端会校验用户提交的手机号和验证码,是否一致;
- 如果一致,则根据手机号查询用户信息,不存在则新建,最后将用户数据保存到redis,并且生成token作为redis的key;
- 当我们校验用户是否登录时,会去携带着token进行访问,从redis中取出token对应的value,判断是否存在这个数据,如果没有则拦截,如果存在则将其保存到threadLocal中,并且放行。
/**
* Redis实现共享Session登录
* @param loginForm
* @param session
* @return
*/
@Override
public Result login(LoginFormDTO loginForm, HttpSession session) {
//1. 校验手机号
String phone = loginForm.getPhone();
if(RegexUtils.isPhoneInvalid(phone)){
//2. 返回错误信息
return Result.fail("手机号格式错误");
}
//3. 从Redis获取验证码并校验
String cacheCode = stringRedisTemplate.opsForValue().get(LOGIN_CODE_KEY + phone);
String code = loginForm.getCode();
if(code == null || !code.equals(cacheCode)){
//不一致,返回错误信息
return Result.fail("验证码错误");
}
// 一致,根据手机号获取用户
User user = this.query().eq("phone", phone).one();
//5. 判断用户是否存在
if

本文介绍了如何使用Redis实现手机验证码登录功能,包括校验手机号、验证码,创建新用户或从数据库查询,以及使用token进行会话共享和登录拦截。还详细描述了登录拦截器的配置和使用情况。

最低0.47元/天 解锁文章
1718

被折叠的 条评论
为什么被折叠?



