jwt refresh token 方案

前後端基於json進行交互,接口通過JWT無狀態token進行權限校驗

  • 登錄時,密碼驗證通過,取當前時間戳生成簽名Token,將用戶的基本信息放到分佈式緩存中(Redis),將生成的Token放在Response Header的Authorization屬性中,同時在緩存中記錄值爲當前時間戳的RefreshToken,並設置有效期
  • 客戶端請求每次攜帶Token進行請求
  • 服務端每次校驗請求的Token有效後,同時比對Token中的時間戳與分佈式緩存中(Redis)的RefreshToken時間戳是否一致,一致則判定Token有效
  • 當請求的Token被驗證時拋出TokenExpiredException異常時說明Token過期,校驗時間戳一致後重新生成Token並調用登錄方法
  • 每次生成新的Token後,同時要根據新的時間戳更新與分佈式緩存中的RefreshToken,以保證兩者時間戳一致

採用JWT有效期內刷新Token方案,解決併發請求問題

爲避免多個請求同一時間分別生成不同的Token,我們引入redis鎖機制。即我們的目的是同一個用戶同一時間的不同請求,只允許獲得鎖的請求進行令牌刷新,其他的請求因爲是在令牌有效期因此直接放行

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章