策略1
最簡單最直接的方式
用戶再次輸入他們的登錄憑證,如用戶名和密碼,得到一個新的token
策略2
采用單token的方式:
-
設置 token 過期時間;
-
前端發起請求,后端驗證 token 是否過期(JWT工具類有一個:isTokenExpired函數);如果過期,前端發起刷新token請求(前端捕獲到401錯誤,說明要刷新token),后端為前端返回一個新的token;
-
前端用新的token發起請求,請求成功;
策略3
采用雙token方式
-
登錄成功以后,后端返回
access_token
和refresh_token
,前端緩存此兩種token; -
使用
access_token
請求接口資源,成功則調用成功;如果token超時(返回前端錯誤代碼),前端攜帶refresh_token
調用token刷新接口獲取新的access_token
; -
后端接受刷新token的請求后,檢查
refresh_token
是否過期。如果過期,拒絕刷新,前端收到該狀態后,跳轉到登錄頁;如果未過期,生成新的access_token
返回給客戶端。 -
客戶端攜帶新的
access_token
重新調用上面的資源接口。 -
前端退出登錄或修改密碼后,注銷舊的token,清空
access_token
和refresh_token
。
參考1