登陸流程:前端
一:登陸成功後: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