Redis代替session实现登录业务

1.使用session实现登录的问题

每个服务器中都有一份属于自己的session,这会导致多台服务器情况下的数据不统一。

使用session拷贝会出现两大问题:

1、每台服务器中都有完整的一份session数据,服务器压力过大。

2、session拷贝数据时,可能会出现延迟

2.redis代替session

原理:

redis数据本身便是共享可以解决掉session共享问题,且可以利用threadLocal的特性,将用户重要数据以token为key存入redis中,自定义拦截器将请求拦截校验redis中是否有用户数据,如果有,将用户数据存入当前线程中。

代码片段如下:

1.获取验证码
2.登录验证
3.定义拦截器

第一层拦截器:拦截所有请求,用于判断且存入用户信息。

第二层拦截器:用于拦截需要具有用户信息的请求.

拦截器注册

3.总结:

1.用户登录时,通过生成的token为key存入redis中,并将token返回给前端。

2.第一层拦截器:验证前端的请求头是否有token,如果有,通过token拿到redis中的用户信息,并存入ThreadLocal中。

3.第二层拦截器:验证ThreadLocal中是否具有用户信息,来验证是否用户登录。

相关推荐
无风听海2 分钟前
LangGraph 控制流原语解析:Edge、Command、Send、Interrupt
java·数据库·edge
XiYang-DING4 分钟前
【Java SE】继承
java·开发语言
2301_792674869 分钟前
java学习day21
java
不能只会打代码10 分钟前
基于Vue 3 + Spring Boot的物联网生鲜品储运系统设计与实现(源码附有详细的文档讲解)
java·前端·vue.js·spring boot·后端·物联网·github
barbyQAQ11 分钟前
GitLab CI/CD 基本用法指南
java·ci/cd·gitlab
历程里程碑11 分钟前
Linux 38 网络协议:从独立主机到全球互通
java·linux·运维·服务器·网络·c++·职场和发展
任子菲阳13 分钟前
学JavaWeb第七天——yml配置文件 & 后端实战Tlias案例
java·开发语言·spring
BUG?不,是彩蛋!14 分钟前
AI智慧社区--实现修改密码、退出登录、动态路由
java·spring boot·后端·intellij-idea·mybatis
白狐_79814 分钟前
从零构建飞书 × OpenClaw 自动化情报站(二)
java·自动化·飞书
smxgn14 分钟前
【SpringBoot整合系列】SpringBoot3.x整合Swagger
java·spring boot·后端