基于redis实现用户登陆

因为session有数据共享问题,不同tomcat服务器中的session不能共享,之后负载均衡就无法实现。所以我们用redis代替session。redis可以被多个tomcat服务器共享,redis基于内存。

之前的session可以看做登陆凭证,本次登陆凭证由session变为token。

手机号验证码登陆

1.用户发送请求携带手机号参数获取验证码,后端随机生成验证码,并把手机号和验证码存入redis。调用第三方平台把验证码发到用户手机。

2.用户输入验证码,发送请求(携带参数手机号,参数验证码)进行登陆,后端从redis查询是否有对应的手机号,验证码。有就登陆成功,根据手机号查询用户信息,随机生成登陆凭证token,把token和用户信息存入redis。返回结果给前端时,会把token存入Result中返回给前端。之后前端每次发送请求时,请求头中都会携带token。

3.之后用户每次发送请求都携带登陆凭证token,用户发送的请求会被拦截器拦截(之前的login服务不会被拦截),拦截后根据token查询redis中是否有对应的用户信息,有就把用户基本信息存入ThreadLocal中以供本次请求使用,然后放行请求。

下图中可以看出,用户的发送的请求,请求头中携带token,这需要在前端自己设置,Authorization这个属性名是前端自定义的

账号密码登陆

1.用户输入账号密码,发送请求(携带参数账号,参数密码)进行登陆,后端从数据库中查询是否有对应的账号,密码。有就登陆成功,根据账号查询用户信息,随机生成登陆凭证 token,把token和用户信息存入redis。返回结果给前端时,会把token存入Result中返回给前端。之后前端每次发送请求时,请求头中都会携带token。

2.之后用户每次发送请求都携带登陆凭证token,用户发送的请求会被拦截器拦截(之前的login服务不会被拦截),拦截后根据token查询redis中是否有对应的用户信息,有就把用户基本信息存入ThreadLocal中以供本次请求使用,然后放行请求。

相关推荐
qq_12498707536 小时前
基于JavaWeb的大学生房屋租赁系统(源码+论文+部署+安装)
java·数据库·人工智能·spring boot·计算机视觉·毕业设计·计算机毕业设计
倒流时光三十年7 小时前
SpringBoot 数据库同步 Elasticsearch 性能优化
数据库·spring boot·elasticsearch
forestsea7 小时前
深入理解Redisson RLocalCachedMap:本地缓存过期策略全解析
redis·缓存·redisson
码农小卡拉7 小时前
深入解析Spring Boot文件加载顺序与加载方式
java·数据库·spring boot
佛祖让我来巡山7 小时前
Redis 为什么这么快?——「极速快递站」的故事
redis·redis为什么快?
怣507 小时前
MySQL多表连接:全外连接、交叉连接与结果集合并详解
数据库·sql
wjhx8 小时前
QT中对蓝牙权限的申请,整理一下
java·数据库·qt
冰暮流星8 小时前
javascript之二重循环练习
开发语言·javascript·数据库
万岳科技系统开发8 小时前
食堂采购系统源码库存扣减算法与并发控制实现详解
java·前端·数据库·算法
冉冰学姐9 小时前
SSM智慧社区管理系统jby69(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·管理系统·智慧社区·ssm 框架