[英]Handling JWT expiration in .NET MVC-application
我有一個ASP.NET MVC應用程序,它在Session中存儲來自我的Web API的JWT令牌和刷新令牌。 我的問題是當JWT令牌到期時該怎么辦,是時候刷新它了。 我認為我的兩個選擇是:
嘗試使用JWT令牌向Web API發出請求,如果它返回401 Unauthorized,請嘗試刷新JWT令牌。
使用計時器在JWT令牌到期之前自動刷新它。
使用這兩種方法中的任何一種有什么好處,我如何以簡單的方式以編程方式實現它們? 例如,如果我使用選項1,是否必須使用try和catch來對API進行每次調用?
我決定使用選項2 ,以盡量減少對API的調用次數。 然后我創建了一個帶有HttpClient工廠方法的基本控制器類,該方法還檢查JWT是否即將到期:
public HttpClient GetHttpClient(string baseAdress)
{
var client = new HttpClient();
client.BaseAddress = new Uri(baseAdress);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
string token;
if (Session["access_token"] != null)
{
var jwthandler = new JwtSecurityTokenHandler();
var jwttoken = jwthandler.ReadToken(Session["access_token"] as string);
var expDate = jwttoken.ValidTo;
if (expDate < DateTime.UtcNow.AddMinutes(1))
token = GetAccessToken().Result;
else
token = Session["access_token"] as string;
}
else
{
token = GetAccessToken().Result;
}
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
Session["access_token"] = token;
return client;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.