登錄雙token方案
文章目錄
登錄雙token方案
前言
方案設計
前言
當我們需要用戶在指定時間內有操作時就可以不用登錄(首次登錄還是免不了的),而在指定時間內沒有任何操作時就需要重新登錄的話,那么就需要對token方案進行一定設計
目前比較推薦的做法是使用雙token方案
方案設計
用戶在登錄之后返回access_token和refresh_token(這里假定他們的有效期分別是2小時和7天)
當access_token未過期時,則請求正常
當access_token過期了,此時服務端會返回過期提示給到客戶端,客戶端收到過期提示后,使用refresh_token去獲取新的access_token和refresh_token(此時他們的有效期就又變為2小時和7天,舊的自然失效)
當refresh_token也過期了,使用它去獲取新access_token時服務端就會返回過期提示,那么此時就應該讓用戶重新登錄了
每次使用access_token時,都會更新refresh_token的有效期
流程圖如下:
以上設計的一個好處就是只要用戶在7天內有操作,那么就可以不用重新登錄,而如果用戶在7天內沒有任何操作,那么則需要用戶重新登錄
使用長短周期token的好處就是短周期token可以防止被截獲后無休止使用,長周期token又可以保證用戶不用一直登錄,畢竟登錄用的是賬號和密碼,這種數據在網絡傳輸中越少越好。
之所以在使用refresh_token時都返回新的refresh_token,而不是延長舊的refresh_token的有效期,主要是為了安全,避免refresh_token被非法截獲后一直可用
假如每次都生成新的refresh_token,那么即使舊的refresh_token被截獲,在用戶合法刷新后就會生成新的refresh_token,導致被截獲的那個舊refresh_token失效,從而提升安全性
————————————————
版權聲明:本文為CSDN博主「huxiaojian5」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/huweijian5/article/details/88903561