使用token機制作登陸鑑權(threadlocal+redis)

  登陸流程:前端

  一:登陸成功後:redis

  1,根據userId生成token,放入redis中 key爲token,value爲用戶信息進行存儲。cookie

  2,response token到前端的cookie中cdn

  3,threadlocal中存儲user 信息blog

  二:攔截器:token

  1,經過request獲取前端的cookie,check token(有兩個token ,token2根據token1生成)it

  2,token不爲空的話,去redis中拿token爲key查詢user信息,若是user爲空,直接返回false.io

  3,user不爲空,刷新threadlocal中的user info,同時刷新redis中token : user的過時時間class

  擴展思路:thread

  問:若是想實現一個帳號若是被第二我的登陸,第一個登陸的會被頂掉,有思路嗎:

  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

相關文章
相關標籤/搜索