基于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中以供本次请求使用,然后放行请求。

相关推荐
CodexDave1 分钟前
数据库连接池耗尽:排查顺序与三层兜底
服务器·前端·数据库·git·云原生·容器·kubernetes
播播资源33 分钟前
智能路由(AI Router):用“虚拟模型”撬动无限算力,从此告别手动切换
数据库
熊文豪42 分钟前
【金仓数据库征文】不装中间件的 MySQL→金仓在线迁移,mysql_fdw 全流程,和一个差点漏掉的 emoji
数据库·mysql·中间件·电科金仓
一个儒雅随和的男子1 小时前
多租户方案的选型
数据库·oracle
zhouhui0011 小时前
AI帮我写了个Spring Boot校验,线上漏掉了这组边界条件
java·spring boot·redis·ai编程
吃饱了得干活1 小时前
扫码登录如何实现?从原理到实战
java·spring boot·redis
listening7772 小时前
HarmonyOS 6.1 跨设备数据库实战:分布式账本的落地与一致性校验
数据库·harmonyos·分布式账本
147API2 小时前
Claude Tag 进入 Slack 后,团队智能体需要哪些任务与审计字段
java·开发语言·数据库
Database_Cool_2 小时前
AI Agent 应用数据库选型:阿里云 PolarDB-X 高并发分布式数据底座
数据库·人工智能·阿里云
黄焖鸡能干四碗2 小时前
IT数据架构规划设计方案(PPT文件)
大数据·网络·数据库·人工智能·架构·区块链