为什么要实现单点登入
一般对于业务方法都需要用户登入才能请求,如果每个方法都去判断用户是否登入太麻烦,可以使用拦截器对所有请求进行统一的登入状态判断。
实现方式
- 登入时使用随机生成算法例如UUID生成随机token
- 将redis的hash数据结构进行存储,并设置过期时间,例如:
user:login:token:9b6a2e6e026a46839a1f6f1d8bb15b7b userId 123 username zhangsan 保存用户的相关字段是为了如果有些请求需要获取当前登入用户的信息,可以根据用户ID查询数据库
- 登入成功后将token返回给前端
拦截器的实现
前端所有请求必须在请求头里加上token
对于某些请求不需要拦截,例如登入请求,静态资源请求
后端拦截业务请求,从请求头里获取token,拼接成key请求redis查询,若为空则拦截,不为空则刷新token的过期时间,放行
文章介绍了单点登录(SSO)的实现,通过生成UUID作为token存储在Redis中,并设置过期时间。当用户登录后,前端请求会携带token,后端拦截器检查请求头中的token,从Redis验证并刷新过期时间,以简化用户授权逻辑。
1768

被折叠的 条评论
为什么被折叠?



