ASP.NET?Core?實現自動刷新JWT?Token
前言:
為了安全性考慮,我們可以設置JWT Token較短的過期時間,但是這樣會導致客戶端頻繁地跳到登錄界面,用戶體驗不好。
正常解決辦法是增加??refresh_token?
?,客戶端使用refresh_token去主動刷新JWT Token。
這里介紹一種變通的方式,自動刷新JWT Token。
原理
我們讀取每個請求的??Authorization?
?頭,獲得當前請求的JWT Token。
檢查當前token的過期時間,如果在30分鐘以內,那么我們就生成一個具有新過期時間的JWT Token,并通過??X-Refresh-Token?
?頭返回。
客戶端檢查到??X-Refresh-Token?
?頭,就將保存的JWT Token替換掉,下次發(fā)送請求就是用最新的token了。
實現
創(chuàng)建一個Middleware
,它的作用是檢查JWT Token過期時間并生成新token返回:
public async Task InvokeAsync(HttpContext context) { JwtSecurityToken token = null; string authorization = context.Request.Headers["Authorization"]; if (!string.IsNullOrEmpty(authorization) && authorization.StartsWith("Bearer ")) token = new JwtSecurityTokenHandler(). ReadJwtToken(authorization.Substring("Bearer ".Length)); //刷新Token if (token != null && token.ValidTo > DateTime.UtcNow && token.ValidTo.AddMinutes(-30) <= DateTime.UtcNow) { context.Response.Headers.Add("X-Refresh-Token", await RefreshTokenAsync(token)); } await _next(context); }
結論
當然,推薦大家盡量使用??refresh_token?
?的方式,畢竟這樣安全性會更高一些。
到此這篇關于ASP.NET Core 實現自動刷新JWT Token的文章就介紹到這了,更多相關ASP.NET Core 自動刷新 內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
ASP.net(C#)從其他網站抓取內容并截取有用信息的實現代碼
ASP.net(C#)從其他網站抓取內容并截取有用信息的實現代碼,需要的朋友可以參考下。2011-09-09ASP.NET網站管理系統(tǒng)退出 清除瀏覽器緩存,Session的代碼
管理系統(tǒng)退出登陸后,將網址重新輸入后還會看到用戶登陸后的界面,為了解決這個問題,我采用了以下方法,需要的朋友可以參考下2012-05-05asp.net(c#)實現從sqlserver存取二進制圖片的代碼
有一個員工表Employee,需要保存員工照片(Photo)到數據庫(sql server)上。員工照片對應的字段是varbinary(max),也就是要存成二進制文件類型(這和以前討巧地存圖片文件路徑就不相同了),默認可以為空。2011-09-09.net生成縮略圖及水印圖片時出現GDI+中發(fā)生一般性錯誤解決方法
這篇文章主要介紹了.net生成縮略圖及水印圖片時出現GDI+中發(fā)生一般性錯誤解決方法 ,需要的朋友可以參考下2014-11-11使用正則Regex來移除網頁的EnableViewState實現思路及代碼
創(chuàng)建好網頁時,什么都沒有寫,但運行時會發(fā)現源程序(View Source),下面一段,此刻,也許你會想起,在網頁有一個屬性EnableViewState,在某些時候我們并不需要它,接下來將介紹如何移除它,感興趣的朋友可以了解下啊2013-01-01