web前端培訓之雙token的神奇功效-登陸驗證

千鋒武漢發表於2021-08-09

      細心的你可能會發現,我們在使用app的時候只需要登陸一次賬號之後下一次開啟就不需要再次登陸,但經過一段時間不登入之後又會要求我們重新登陸,你知道這是如何實現的嗎?

      雙token驗證

web前端培訓雙token1

      具體說明如下:

      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

      以上就是雙token登陸驗證的介紹了,同學們不妨親自去試試。最後如果你對 web前端感興趣的話,不妨關注小千,後期分享更多web前端技術知識。

      文來自千鋒教育,轉載請註明出處。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31548651/viewspace-2785919/,如需轉載,請註明出處,否則將追究法律責任。

相關文章