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中是否具有用户信息,来验证是否用户登录。

相关推荐
彧azz22 分钟前
Java学习语法篇:变量
java·学习
程序员阿鹏1 小时前
为什么MySQL InnoDB选择B+树?
数据结构·数据库·b树·sql·mysql·算法·缓存
信誓旦旦的程序猿1 小时前
【量化系统从零构建 #04】存储设计:选型·建库·交易日历
java·人工智能·python·股票数据api·股票数据·股票数据api接口·股票api数据接口
yurenpai(27届找实习中)1 小时前
Java 10 的 var 为什么不能随便用?从订单汇总看懂类型推断与泛型陷阱
java·开发语言·java18
Flynt3 小时前
把公司项目迁到 Spring Boot 4.0:编译通过只是开始
java·spring boot·后端
码哥字节3 小时前
AI一天出百本书,写不出我被Redis坑的那三天三夜
redis·ai编程工具
Tangyuewei3 小时前
给老 Spring 项目装个 AI Agent
java·人工智能·spring
她的男孩3 小时前
多租户和数据权限怎么共存?扒完拦截器注册链路,我找到 4 个隐蔽的坑
java·后端·架构
小溪学编程4 小时前
Java BufferedReader 详解:从基础用法到性能优化
java·python·性能优化
HZero.chen4 小时前
Java 匿名类简介
java·匿名类