使用redis + 随机token 实现单点登入思路

文章介绍了单点登录(SSO)的实现,通过生成UUID作为token存储在Redis中,并设置过期时间。当用户登录后,前端请求会携带token,后端拦截器检查请求头中的token,从Redis验证并刷新过期时间,以简化用户授权逻辑。

为什么要实现单点登入

一般对于业务方法都需要用户登入才能请求,如果每个方法都去判断用户是否登入太麻烦,可以使用拦截器对所有请求进行统一的登入状态判断。

实现方式

  1. 登入时使用随机生成算法例如UUID生成随机token
  2. 将redis的hash数据结构进行存储,并设置过期时间,例如:
  							user:login:token:9b6a2e6e026a46839a1f6f1d8bb15b7b
  							 userId     123
  							username   zhangsan
  保存用户的相关字段是为了如果有些请求需要获取当前登入用户的信息,可以根据用户ID查询数据库
  1. 登入成功后将token返回给前端

拦截器的实现

前端所有请求必须在请求头里加上token
对于某些请求不需要拦截,例如登入请求,静态资源请求
后端拦截业务请求,从请求头里获取token,拼接成key请求redis查询,若为空则拦截,不为空则刷新token的过期时间,放行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值