1.面临问题:
session存在于服务端,分布式中多个微服务,每个微服务都是独立的服务器,session信息同步不好维护,有没有其它办法?
2.解决思路
token替代session使用流程:
1.用户登录成功 生成 token存入redis(key:token,value:<过期时间(精确到分钟),用户信息...> )
2. 把token返回给前端,并请求系统时将 token加入header
3. 使用过滤器或拦截器,在执行前验证token是否有效(根据token得到redis中内容)
3.1. 如果过期则删除token返回过期信息
3.2. 没有过期则修改新的过期时间
4. 如果判断用户登录异地登录可以再token加密时最后加上加密后的用户id如 token_base64(userId),在登陆成功时删除带有此标识的key,或者再往加
一个token和userId的对应关系(本人用的前者)
token + redis优点:
1.解决分布式登录信息同步问题
2.确保系统同一账号登录
3.响应快(根据情况来判断是否开启持久化)