登錄流程文檔梳理

前段時間對系統(tǒng)密碼安全性進(jìn)行了改造航夺,同時對登錄流程中的細(xì)節(jié)進(jìn)行文檔梳理互婿。比如,token生成诞吱,token校驗(yàn)田轧、續(xù)期暴匠,以及全局用戶信息存儲方式,登出和修改密碼傻粘,密碼重置需要做哪些邏輯處理每窖。

一帮掉、登錄流程圖
1.登錄-流程圖.jpg
二、JWT 實(shí)現(xiàn)登錄認(rèn)證 + Token 自動續(xù)期
  1. 創(chuàng)建token
    1.1 創(chuàng)建jwtHeader岛请;
    1.2 創(chuàng)建jwtPayload旭寿,jwtPayload存放userId, uuid, clientType;
    1.3 提前生成秘鑰對(RSA)崇败,生成簽名盅称;

  2. 創(chuàng)建UserTokenEntity(userId,uuid后室,clientType, createTime)

  3. 緩存UserTokenEntity
    3.1 字段
    userId:用戶id;
    expireTime = 24小時缩膝,過期時間;
    clientType = APP/WEB岸霹,表示是web端還是app端疾层;
    uuid:表示唯一性;
    3.2 實(shí)現(xiàn)組合唯一
    redisKey = userId + clientType + uuid
    例如:張三的賬號可以多個終端登錄贡避,userId + clientType + uuid實(shí)現(xiàn)組合唯一痛黎,作為當(dāng)前客戶端登錄的唯一性key,同時如果需要查詢這個賬號有幾個終端登錄刮吧,可以用userId查詢湖饱。

  4. token校驗(yàn)、續(xù)期
    攔截器中主要做兩件事杀捻,一是對token進(jìn)行校驗(yàn)井厌,二是判斷token是否需要進(jìn)行續(xù)期(最小續(xù)期時間:minTime = 1小時)
    4.1 解析token,驗(yàn)證簽名致讥,驗(yàn)簽是否通過仅仆;
    4.2 redis獲取UserTokenEntity,如果UserTokenEntity == null垢袱,token過期墓拜,需要重新登錄;
    4.3 如果UserTokenEntity != null请契,驗(yàn)證是否需要續(xù)期:
    token已使用時間:usedTime = now - createTime撮弧,now是當(dāng)前時間,createTime是創(chuàng)建UserTokenEntity的時間姚糊;
    最大可使用時間:canUseTime = expireTime - minTime = 23;
    usedTime如果小于canUseTime,說明不需要續(xù)期授舟;
    usedTime如果大于canUseTime救恨,則說明需要續(xù)期,UserTokenEntity中createTime更新為當(dāng)前時間释树,UserTokenEntity中createTime更新為當(dāng)前時間肠槽,UserTokenEntity中createTime更新為當(dāng)前時間擎淤,重要的說三遍,重新緩存UserTokenEntity秸仙。

三嘴拢、其它重要關(guān)聯(lián)點(diǎn)
  1. 緩存全局的用戶信息,GlobalUserInfoEntity
    UserService提供統(tǒng)一方法寂纪,參數(shù)userId席吴,查詢用戶全部信息,包括用戶捞蛋、部門孝冒、角色、菜單等信息拟杉,方法上提供緩存庄涡,24小時;

  2. 登錄
    先移除緩存用戶信息搬设,再查詢并更新用戶緩存信息穴店;

  3. 退出登錄
    刪除該用戶緩存UserTokenEntity deleteRedisKey = userId + clientType + uuid

  4. 修改密碼
    刪除該用戶所有客戶端緩存UserTokenEntity, 讓所有token都失效,deleteRedisKey = userId

  5. 重置密碼
    刪除該用戶所有客戶端緩存UserTokenEntity, 讓所有token都失效拿穴,deleteRedisKey = userId

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
禁止轉(zhuǎn)載泣洞,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。
  • 序言:七十年代末贞言,一起剝皮案震驚了整個濱河市斜棚,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌该窗,老刑警劉巖弟蚀,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異酗失,居然都是意外死亡义钉,警方通過查閱死者的電腦和手機(jī)捶闸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門兑牡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來亿虽,“玉大人粘秆,你說我怎么就攤上這事∨2福” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵奴曙,是天一觀的道長炉菲。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么道偷? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮怀跛,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘柄冲。我一直安慰自己吻谋,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布现横。 她就那樣靜靜地躺著漓拾,像睡著了一般。 火紅的嫁衣襯著肌膚如雪戒祠。 梳的紋絲不亂的頭發(fā)上骇两,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天,我揣著相機(jī)與錄音姜盈,去河邊找鬼低千。 笑死,一個胖子當(dāng)著我的面吹牛馏颂,可吹牛的內(nèi)容都是我干的示血。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼救拉,長吁一口氣:“原來是場噩夢啊……” “哼难审!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起亿絮,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤告喊,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后派昧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體黔姜,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年斗锭,在試婚紗的時候發(fā)現(xiàn)自己被綠了地淀。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡岖是,死狀恐怖帮毁,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情豺撑,我是刑警寧澤烈疚,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站聪轿,受9級特大地震影響爷肝,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一灯抛、第九天 我趴在偏房一處隱蔽的房頂上張望金赦。 院中可真熱鬧,春花似錦对嚼、人聲如沸夹抗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽漠烧。三九已至,卻和暖如春靡砌,著一層夾襖步出監(jiān)牢的瞬間已脓,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工通殃, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留度液,地道東北人。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓邓了,卻偏偏與公主長得像恨诱,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子骗炉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容