Redis学习-短信登录
共享session(单点登录)
介绍
为什么需要共享Session?
防止多个后端服务器的数据存储不一致,导致用户访问时出现未登录的情况
如何共享session?
使用独立的内存存储来存放session
由于多台Tomcat并不共享Session存储空间,当请求切换到不同Tomcat服务时将导致数据丢失的问题。
解决方案?/替代方案?
Session的替代方案应该满足
1.数据共享
2.内存存储
3.key,value结构
–>Redis
实现
key怎么设计?
为了安全性,随机生成token,而不是拼接用户信息,防止恶意伪造或爆破
选用哪一种value数据结构存放用户信息?
string还是hash?
1.先在程序中将对象进行JSON序列化, 再以string类型写入
2.直接以hash数据结构写入✔
为什么选择hash?
因为用户信息时对象,建议选hash数据结构,占用内存更少,且支持对单个字段的增删改查。
具体实现流程?
注意事项
1.存入Redis的数据一定要设置过期时间
2.存入Redis的数据尽量保持精简和安全(脱敏)
3.已登陆用户访问系统后,要刷新token过期时间(续期)。任何访问路径都需要刷新token,不仅仅是需要登录的路径,可以新增一层拦截器来实现token刷新。如下图
时间(续期)。任何访问路径都需要刷新token,不仅仅是需要登录的路径,可以新增一层拦截器来实现token刷新。如下图