web前端培訓之雙token的神奇功效-登陸驗證
細心的你可能會發現,我們在使用app的時候只需要登陸一次賬號之後下一次開啟就不需要再次登陸,但經過一段時間不登入之後又會要求我們重新登陸,你知道這是如何實現的嗎?
雙token驗證
具體說明如下:
1.根據需要下載軟體,完成註冊賬戶
2.登入賬戶,後端返回 兩個token資訊,分別為 access_token 以及 refresh_token,access_token稱之為短token,refresh_token稱之為長token
3.短token也就是access_token未過期,所有的請求一切都正常,使用者需要什麼資料就返回什麼資料
4.access_token 過期,服務端返回一個狀態碼給客戶端,客戶端接收到該狀態碼之後,使用refresh_token重新獲取一次新的 access_token 和 refresh_token,相當於重置token
5.如果在refresh_token有效期中沒有使用過該軟體,意味著refresh_token過期,使用它獲取新的 access_token 和 refresh_token 時會返回新的一個狀態碼,提示使用者必須登入
有的人可能會有如下疑問:
為什麼在使用 refresh_token 時要返回新的 access_token 和 refresh_token,而不是延長 原來的 refresh_token 有效期?
為了安全,如果一旦 refresh_token 被駭客等人員截獲到,他們就一直可以非法使用你的賬號
即使一旦被截獲,只要使用者這邊重新整理就會重新獲取到新的 refresh_token,那麼以前的 被截獲的 refresh_token 就會失效
token的時間設定
token的時間設定需要看需求進行劃分割槽別設定:
PC網路應用:對於網路應用程式而言,由於token可以直接直觀地獲取到,因此不管是accessToken還是refreshToken為了安全起見,其過期時間都不應該設定得很長,且需要不停地更換token,因此PC網路應用的accessToken一般設定為2h過期,而refreshToken設定為1天到2天比較好,不足1天也是可以的,如果設定的時間比較短就在活躍期間時常重新整理freshToken就好了,如果設定的時間比較長,就只需要設定一個閾值(比如7day的refreshToken設定一個6day閾值),在refreshToken小於等於這個閾值的時候就進行重新整理refreshToken就好了。
手機應用:對於手機APP應用而言,登入操作一般只做一次,因此token的過期時間必是無限,即不會過期,不過為了安全起見(比如防止你丟手機),token應該以某種程度上對使用者可見(比如在安全中心裡檢驗了身份之後可以讓你看到哪些裝置有token,即哪些裝置會被允許登入)並可讓使用者對其進行一定程度上的操作(比如你手機丟了,然後登入安全中心移除那個手機的token,也就是移除那個手機的登陸許可權,從而使那個手機的應用上的你的帳號強制下線)
無效的Token的處理
對於頻繁更換的Token,如何處理舊的未過期的而又無效的Token,以下提供了幾個思路:
1.簡單地從瀏覽器中移除token就好了
顯然,這種方式對於伺服器方面的安全而言並沒有什麼卵用,但它能透過移除存在的token來阻止攻擊者(比如,攻擊者必須在使用者下線之前竊取到token)
2.製作一張token黑/白名單
在移除了瀏覽器儲存的token後如果還想要再嚴格點,就只能在伺服器上製作一張已經無效但是沒過期的token的黑/白名單了,在每次請求中都運算元據庫進行token的匹配,並以某種方式進行維護(不管是黑名單的定期刪除維護也好,白名單的無效時刪除也好),不過顯然這種方式還是違背了token無狀態的初衷,但是除此之外也沒別的辦法。
儲存可以按照userId—token的方式儲存在資料庫中(當然也可以按你喜歡新增其他欄位標明其他資訊,比如說mac地址啦,是手機還是電腦啦,裝置型號啦,巴拉巴拉巴拉····),白名單的話直接儲存有效的token,在需要token無效的邏輯中刪除指定token即可(比如重新整理token的時候把舊的無效的但未過期的刪掉)。而如果是黑名單的話就需要你定期去刪除其中已經過期的token了。而驗證的話除了要去資料庫名單裡匹配之外還需要驗證token本身的有效性。
3.只需要將token的過期時間設定的足夠短就行了
如何重新整理Token(引用自github)
以上就是雙token登陸驗證的介紹了,同學們不妨親自去試試。最後如果你對 web前端感興趣的話,不妨關注小千,後期分享更多web前端技術知識。
文來自千鋒教育,轉載請註明出處。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31548651/viewspace-2785919/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 登陸驗證
- json web token 實踐登入以及校驗碼驗證JSONWeb
- web前端培訓分享Electron之IPC 通訊Web前端
- web前端培訓分享Electron之Main Process APIWeb前端AIAPI
- web前端培訓哪家好?Web前端
- 新!Web身份驗證新標,支援免密登陸Web
- 培訓的Web前端什麼水平Web前端
- web前端培訓:常用的Web前端開發框架有哪些?Web前端框架
- web前端培訓分享:web前端的工作方向是什麼?Web前端
- 9.Django之登陸註冊驗證登出Django
- web前端培訓要學多久Web前端
- Web前端培訓面試攻略Web前端面試
- Web前端培訓分享:Web前端到底是什麼?Web前端
- web前端培訓之Javascript如何改變陣列的長度?Web前端JavaScript陣列
- vue登入註冊,帶token驗證Vue
- web前端培訓需要學多久呢Web前端
- 長沙web前端培訓班學費多少?長沙培訓前端多少錢?Web前端
- 長沙Web前端培訓分享:Web前端學習路線Web前端
- Web前端培訓分享:Web前端三大主流框架對比!Web前端框架
- Web前端培訓:有哪些好用的前端開發工具呢?Web前端
- web前端培訓學習技巧有哪些Web前端
- 【Web前端培訓】預解析(變數提升)Web前端變數
- 實現基於JWT的Token登入驗證功能JWT
- 如何分辨Web前端培訓機構的好壞Web前端
- web前端培訓後的工作方向是什麼Web前端
- Android之window機制token驗證Android
- Web前端培訓分享:前端開源平臺介紹Web前端
- 接入微信公眾號登入-驗證token
- Web前端培訓發展前景怎麼樣?Web前端
- web前端培訓React效能優化總結Web前端React優化
- web前端培訓分享node學習筆記Web前端筆記
- web前端開發主要培訓哪些內容Web前端
- 長沙Web前端培訓機構哪裡好?花錢培訓值得嗎?Web前端
- 長沙Web前端培訓:優秀的Web前端工程師需要具備什麼?Web前端工程師
- SpringSceurity(5)---簡訊驗證碼登陸功能Spring
- 【Azure Developer】如何驗證 Azure AD的JWT Token (JSON Web 令牌)?DeveloperJWTJSONWeb
- Web前端學習路線資料彙總,Web前端培訓學校Web前端
- 想要轉行Web前端,需要參加長沙Web前端培訓班嗎?Web前端