加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

使用token机制做登录鉴权(threadlocal+redis)

发布时间:2020-12-15 07:18:31 所属栏目:Java 来源:网络整理
导读:登录流程: 一:登录成功后: 1,根据userId生成token,放入redis中 key为token,value为用户信息进行存储。 2,response token到前端的cookie中 3,threadlocal中存储user 信息 二:拦截器: 1,通过request获取前端的cookie,check token(有两个token,token2

登录流程:

一:登录成功后:

1,根据userId生成token,放入redis中 key为token,value为用户信息进行存储。

2,response token到前端的cookie中

3,threadlocal中存储user 信息

二:拦截器:

1,通过request获取前端的cookie,check token(有两个token,token2根据token1生成)

2,token不为空的话,去redis中拿token为key查询user信息,如果user为空,直接返回false.

3,user不为空,刷新threadlocal中的user info,同时刷新redis中token : user的过期时间

?

扩展思路:

问:如果想实现一个账号如果被第二个人登录,第一个登录的会被顶掉,有思路吗:

redis : userId -> token?

? ? ? ? ? ?token -> user

我这样想的:登录succ->生成唯一token->redis存 userId:token ,token:user 。拦截器根据redis的token key 进行判断user是否为null;

? ? ? ? ? ? ? ? ? ? ?如果第二个人登录此账户,同样的生成一个唯一token,根据userId查出redis中的所有token,然后遍历删除token:user。重新设置新的token:user

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读