[英]Handling Refresh Token
我有一個在我的ASP.NET WebAPI中使用OWIN身份驗證的Web api,我需要實現刷新令牌。
用戶登錄時,API將Access_Token
, Expiry_Date
(3分鍾)和Refresh_token
發送給客戶端。
然后將令牌保存在客戶端localStorage
。
我知道,如果access_token
過期,則使用refresh_token即可獲取新的access_token
。
現在我的問題是何時執行此操作?
我是否需要在access_token
請求Web API中的數據時檢查客戶端是否仍然具有有效/未過期的access_token
? 如果access_token過期,我需要請求一個新的access_token對嗎?
例如:
api/orders
(Web API)的形式請求數據。 Expiry_Date
檢測到他使用的access_token
已過期。 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.