token & refresh token 機制總結


前言

我在項目上寫了個配置頁面,之前很簡單直接登錄,畢竟配置頁面自己人用就沒有做token機制,后來公司的安全審核不過,現在要加上token和刷新機制。小結一下。

token和刷新機制

token機制就是在登錄成功后返回一個token,並緩存起來,之后每個請求頭里帶上token,后端驗證不通過返回401,前端就直接跳轉到登錄頁。這樣就能防止直接訪問某個鏈接就能跳到登錄頁的尷尬局面。

token刷新機制就是在使用的時候使用某個機制使得這個token不過期,不會跳轉到登錄頁。而沒有使用的時候token會過期,他隔得太久了再調接口就是401,就會跳到登錄頁。

兩種token刷新機制

第一種(后端提供刷新接口)

客戶端 服務端
--- 發送username & password --->
<--- 返回accesstoken & refreshtoken ---
--- 訪問接口攜帶accesstoken --->
<--- 返回信息/401 ---
--- accesstoken過期訪問刷新接口攜帶refreshtoken --->
<--- 返回新的accesstoken/401 ---
--- 訪問接口攜帶新的accesstoken --->
<--- 返回信息/401 ---

這種情況下 refreshtoken可以設置的時間長一點,而accesstoken設置的時間短一點,我們固定一個用戶活躍周期;

活躍周期 = token周期 * 2 ;

eg:活躍周期(at);token周期(et);accesstoken(5 min);refreshtoken(1 day);
用戶在15:00登錄,返回token,et[15:00-15:05];at[15:00-15:10];
如果用戶在15:06調用接口,攜帶accesstoken會返回401過期,此時在活躍周期范圍內,則調用refreshtoken刷新接口,返回新的accesstoken;
此時:et[15:06-15:11],at[15:06-15:16];
如果用戶在15:17分調用接口攜帶accesstoken會返回401過期,此時不再活躍周期內,則跳轉到登錄頁;

第二種(靠前端cookie實現)

客戶端 服務端
--- 發送username & password --->
<--- 返回accesstoken ---
cookie存儲設置過期時間
--- 訪問接口攜帶accesstoken --->
<--- 返回信息/401 --->
調用成功,覆蓋延長cookie過期時間 --->

這種情況后端accesstoken可以設置的時間長一點;
前端將token存在cookie中,維護一個過期時間,每次調用接口成功后就覆蓋延長這個過期時間,不調用接口的時候自然會超時了;

以上;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM