gpt4 book ai didi

c# - 在 .NET MVC 应用程序中处理 JWT 过期

转载 作者:行者123 更新时间:2023-11-30 13:30:09 24 4
gpt4 key购买 nike

我有一个 ASP.NET MVC 应用程序,它在 session 中存储来 self 的 Web API 的 JWT token 和刷新 token 。我的问题是当 JWT token 过期并且是时候刷新它时该怎么办。在我看来,我的两个选择是:

  1. 尝试使用 JWT token 向 Web API 发出请求,如果它返回 401 Unauthorized,请尝试刷新 JWT token 。

  2. 使用计时器在 JWT token 过期之前自动刷新它。

使用这两种方法中的任何一种都有哪些优势,我如何以编程方式轻松实现它们?例如,如果我使用选项 1,是否必须对 API 的每次调用都使用 try 和 catch?

最佳答案

我决定采用选项 2 以尽量减少对 API 的调用次数。然后,我使用 HttpClient 工厂方法创建了一个基 Controller 类,它还检查 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;
}

关于c# - 在 .NET MVC 应用程序中处理 JWT 过期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39877165/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com