使用token機制做登錄鑒權(threadlocal+redis)


登錄流程:

一:登錄成功后:

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM