通过redis优化登录流程

方案1:基于session实现登录功能

  1. 提交手机号,随机生成验证码,发送验证码到session
  2. 用户输入的验证码与session中的验证码一致,则根据手机号查询或注册用户,将用户信息存入session中
  3. 配置拦截器,从session中获取用户信息,不存在则拦截;存在则保存用户信息到threadLocal中,放行。

session共享问题

session只保存在一台tomcat服务器上。通过session拷贝的方式可以把session信息同步给其他tomcat服务器,这样实现session共享。
但是这样实现具有两个大问题:

  1. 每台tomcat都有一份session数据,冗余过大
  2. session拷贝可能会有数据延迟

把session换成redis,redis本身就是共享的,可以避免session共享的问题。

方案2:基于redis实现登录

  1. 提交手机号,生成验证码,把验证码存入redis中(key:手机号,value:验证码)
  2. 从redis中获取验证码,校验后获得用户信息,把用户信息存入redis(key:随机uuid,value:user对象),设置过期时间
    把key传入前端,保存在前端的sessionStorage中
  3. 配置拦截器,从前端获取key,根据key查询redis中的用户,把用户信息保存在threadLocal中,刷新过期时间。
posted @ 2024-02-28 17:16  ︶ㄣ演戲ㄣ  阅读(28)  评论(0)    收藏  举报