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

为什么要实现单点登入

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

实现方式

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

拦截器的实现

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

你可能感兴趣的:(redis,数据库,缓存)