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

相关推荐
橙淮4 小时前
并发编程(六)
java·jvm
拽着尾巴的鱼儿4 小时前
springboot openfeign 自定义feign 接口重试机制
java·spring boot·后端
白露与泡影4 小时前
2026大厂Java面试题大全!牛客网最新版
java·开发语言
EntyIU5 小时前
JVM内存与GC笔记
java·jvm·笔记
XS0301065 小时前
并发编程 六
java·后端
小饼干在学嘎瓦5 小时前
本地缓存和分布式缓存如何选择?
分布式·缓存
yaoxin5211235 小时前
419. 现代 Java IO 最佳实践 - 写入文本文件
java·windows·python
雪宫街道5 小时前
synchronized 锁的范围:对象锁、类锁与代码块锁
java·jvm·后端·面试
x***r1515 小时前
linux安装 jdk-8u291-linux-x64.tar.gz 详细步骤(解压配置环境变量)
java
极光代码工作室6 小时前
基于SpringBoot的校园论坛系统
java·springboot·web开发·后端开发