通过redis优化登录流程
方案1:基于session实现登录功能
- 提交手机号,随机生成验证码,发送验证码到session
- 用户输入的验证码与session中的验证码一致,则根据手机号查询或注册用户,将用户信息存入session中
- 配置拦截器,从session中获取用户信息,不存在则拦截;存在则保存用户信息到threadLocal中,放行。
session共享问题
session只保存在一台tomcat服务器上。通过session拷贝的方式可以把session信息同步给其他tomcat服务器,这样实现session共享。
但是这样实现具有两个大问题:
- 每台tomcat都有一份session数据,冗余过大
- session拷贝可能会有数据延迟
把session换成redis,redis本身就是共享的,可以避免session共享的问题。
方案2:基于redis实现登录
- 提交手机号,生成验证码,把验证码存入redis中(key:手机号,value:验证码)
- 从redis中获取验证码,校验后获得用户信息,把用户信息存入redis(key:随机uuid,value:user对象),设置过期时间
把key传入前端,保存在前端的sessionStorage中 - 配置拦截器,从前端获取key,根据key查询redis中的用户,把用户信息保存在threadLocal中,刷新过期时间。
浙公网安备 33010602011771号