簡體   English   中英

在.NET MVC應用程序中處理JWT到期

[英]Handling JWT expiration in .NET MVC-application

我有一個ASP.NET MVC應用程序,它在Session中存儲來自我的Web API的JWT令牌和刷新令牌。 我的問題是當JWT令牌到期時該怎么辦,是時候刷新它了。 我認為我的兩個選擇是:

  1. 嘗試使用JWT令牌向Web API發出請求,如果它返回401 Unauthorized,請嘗試刷新JWT令牌。

  2. 使用計時器在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.

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