登錄流程:
一:登錄成功后:
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