記錄一下先後端分離下————token超時刷新策略!前端
昨天發了一篇記錄 先後端分離應用——用戶信息傳遞 中介紹了token
認證機制,跟幾位羣友討論了下,有些同窗有這麼一個疑惑:token
失效了,應該怎麼作?強制定向到登陸頁?java
其實理論上若是是活躍用戶,token
失效後,假如用戶正在操做表單,此時忽然定向到登陸頁面,那用戶體驗太差了。後端
token
過時時間token
過時時,在用戶無感知的狀況下動態刷新token
,作到一直在線狀態token
過時時,直接定向到登陸頁如何簽發token
,請看上一篇推文,這裏不作過多介紹。先看看登陸接口返回的數據以下:app
1@Data
2public class LoginVo implements Serializable {
3
4 private static final long serialVersionUID = 6711396581310450023L;
5
6 //...省略部分業務字段
7
8 /**
9 * token令牌 過時時間默認15day
10 */
11 private String jwt;
12
13 /**
14 * 刷新token 過時時間能夠設置爲jwt的兩倍,甚至更長,用於動態刷新token
15 */
16 private String refreshJwt;
17
18 /**
19 * token過時時間戳
20 */
21 private Long tokenPeriodTime;
22
23}
具體返回字段的意義請看註釋,這裏再簡要說明:前後端分離
token
,過時時間設置長一些,15day吧token
過時時間能夠設置爲jwt
的兩倍,甚至更長,用於動態刷新token
時候提交後臺驗證token
過時時間戳,前端每次調用接口前須要主動判斷是否已通過期,若是過時則提交refreshJwt
訪問token
刷新的接口進行刷新前端檢測到token
過時後,攜帶refreshJwt
訪問後臺刷新token
的接口,服務端在攔截器中依然對refreshJwt
進行解析鑑權spa
refreshJwt
也過時了,提示登陸過時,強制跳轉登陸頁refreshJwt
還在有效期,則簽發新的token
返回,前端使用最新的token
進行接口請求refreshJwt
過時時間與token
過時時間的差值這段時間內,不停的動態刷新token
,使其作到無感知的狀態下一直保持登陸狀態refreshJwt
過時時間到了,依然沒有使用系統,那麼將斷定爲不活躍用戶,此時應當重定向到登陸頁了篇幅較短,主要是延續上一篇 先後端分離應用——用戶信息傳遞 遺留問題作一下總結。若是你有更好的作法,歡迎留言告知我,謝謝啦。後續會不按期更新原創文章,歡迎關注公衆號 「張少林同窗」!3d