②手机验证码登录功能:Redis实现session共享

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

在这里插入图片描述

个人简介: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
评论 60
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

.29.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值