簡體   English   中英

處理刷新令牌

[英]Handling Refresh Token

我有一個在我的ASP.NET WebAPI中使用OWIN身份驗證的Web api,我需要實現刷新令牌。

用戶登錄時,API將Access_TokenExpiry_Date (3分鍾)和Refresh_token發送給客戶端。

然后將令牌保存在客戶端localStorage

我知道,如果access_token過期,則使用refresh_token即可獲取新的access_token

現在我的問題是何時執行此操作?

我是否需要在access_token請求Web API中的數據時檢查客戶端是否仍然具有有效/未過期的access_token 如果access_token過期,我需要請求一個新的access_token對嗎?

例如:

  1. 客戶端(移動混合應用)以api/orders (Web API)的形式請求數據。
  2. 客戶端根據本地存儲中保存的Expiry_Date檢測到他使用的access_token已過期。
  3. 我需要“停止”請求,使用refresh_token獲取新的access_token ,然后再次請求api/orders 基本上同時執行三個請求? 在我看來有點效率。

還是讓用戶再次登錄? 我的意思是用戶每3分鍾需要登錄一次? 這違背了此目的。

知道如何處理嗎?

在下面的這個示例ajax請求中,有人可以解決這個問題嗎?

$.ajax({
      type: 'GET',
      url: WEB_API_URL,
      data: data,
      dataType: 'json',
      beforeSend: function(xhr) {
         // need to check if the accessToken is expired
         xhr.setRequestHeader("Authorization", "Bearer " + accessToken);
       },
   }).

您應該首先從數據存儲中獲取令牌。 還要檢查它們在接下來的幾秒鍾內是否仍然有效。 您不希望遇到失敗的授權,因為您的請求因某些原因而延遲。

如果令牌即將過期,請使用刷新令牌獲取新的訪問令牌。

然后將您的請求發送到Web Api。

簡而言之;

1. Get token from datastore.
2. Check if token is valid.
3. If not valid, get new token.
4. Send request to Web Api.

我沒有使用Ajax的經驗,但是通過此流程,您應該能夠處理您的請求,最多可以向您的api發送2個請求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM