Token 是在服務端產生的。如果前端使用用戶名/密碼向服務端請求認證,服務端認證成功,那麼在服務端會返回 Token 給前端。前端可以在每次請求的時候帶上 Token 證明自己的合法地位
從安全的角度考慮,Token 都需要設有效期。
那麼有效期多長合適呢?
只能說,根據系統的安全需要,儘可能的短,但也不能短得離譜——想像一下手機的自動熄屏時間,如果設置爲 10 秒鐘無操作自動熄屏,再次點亮需要輸入密碼,會不會瘋?
如果用戶在正常操作的過程中,Token 過期失效了,要求用戶重新登錄……用戶體驗豈不是很糟糕?
爲了解決在操作過程不能讓用戶感到 Token 失效這個問題,使用 Refresh Token,它可以避免頻繁的讀寫操作。
服務端只需要在客戶端請求更新 Token 的時候對 Refresh Token 的有效性進行一次檢查,大大減少了更新有效期的操作,也就避免了頻繁讀寫。當然 Refresh Token 也是有有效期的,但是這個有效期就可以長一點了,比如,以天爲單位的時間。
使用 Token 和 Refresh Token 的時序圖如下: