ASP.NET?Core?實(shí)現(xiàn)自動(dòng)刷新JWT?Token
前言:
為了安全性考慮,我們可以設(shè)置JWT Token較短的過期時(shí)間,但是這樣會(huì)導(dǎo)致客戶端頻繁地跳到登錄界面,用戶體驗(yàn)不好。
正常解決辦法是增加??refresh_token?
?,客戶端使用refresh_token去主動(dòng)刷新JWT Token。
這里介紹一種變通的方式,自動(dòng)刷新JWT Token。
原理
我們讀取每個(gè)請(qǐng)求的??Authorization?
?頭,獲得當(dāng)前請(qǐng)求的JWT Token。
檢查當(dāng)前token的過期時(shí)間,如果在30分鐘以內(nèi),那么我們就生成一個(gè)具有新過期時(shí)間的JWT Token,并通過??X-Refresh-Token?
?頭返回。
客戶端檢查到??X-Refresh-Token?
?頭,就將保存的JWT Token替換掉,下次發(fā)送請(qǐng)求就是用最新的token了。
實(shí)現(xiàn)
創(chuàng)建一個(gè)Middleware
,它的作用是檢查JWT Token過期時(shí)間并生成新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); }
結(jié)論
當(dāng)然,推薦大家盡量使用??refresh_token?
?的方式,畢竟這樣安全性會(huì)更高一些。
到此這篇關(guān)于ASP.NET Core 實(shí)現(xiàn)自動(dòng)刷新JWT Token的文章就介紹到這了,更多相關(guān)ASP.NET Core 自動(dòng)刷新 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
ASP.net(C#)從其他網(wǎng)站抓取內(nèi)容并截取有用信息的實(shí)現(xiàn)代碼
ASP.net(C#)從其他網(wǎng)站抓取內(nèi)容并截取有用信息的實(shí)現(xiàn)代碼,需要的朋友可以參考下。2011-09-09ASP.NET網(wǎng)站管理系統(tǒng)退出 清除瀏覽器緩存,Session的代碼
管理系統(tǒng)退出登陸后,將網(wǎng)址重新輸入后還會(huì)看到用戶登陸后的界面,為了解決這個(gè)問題,我采用了以下方法,需要的朋友可以參考下2012-05-05asp.net(c#)實(shí)現(xiàn)從sqlserver存取二進(jìn)制圖片的代碼
有一個(gè)員工表Employee,需要保存員工照片(Photo)到數(shù)據(jù)庫(sql server)上。員工照片對(duì)應(yīng)的字段是varbinary(max),也就是要存成二進(jìn)制文件類型(這和以前討巧地存圖片文件路徑就不相同了),默認(rèn)可以為空。2011-09-09.net生成縮略圖及水印圖片時(shí)出現(xiàn)GDI+中發(fā)生一般性錯(cuò)誤解決方法
這篇文章主要介紹了.net生成縮略圖及水印圖片時(shí)出現(xiàn)GDI+中發(fā)生一般性錯(cuò)誤解決方法 ,需要的朋友可以參考下2014-11-11從請(qǐng)求管道深入剖析HttpModule的實(shí)現(xiàn)機(jī)制圖文介紹
想要了解底層的原理必須對(duì)請(qǐng)求處理過程和頁面的生命周期有點(diǎn)了解才方便您入門學(xué)習(xí)一下內(nèi)容,本文將詳細(xì)介紹2012-11-11asp.net 簡單驗(yàn)證碼驗(yàn)證實(shí)現(xiàn)代碼
網(wǎng)站開發(fā)一般登錄注冊(cè)的時(shí)候都要用到了 所以寫下來給大家參考參考2009-09-09使用正則Regex來移除網(wǎng)頁的EnableViewState實(shí)現(xiàn)思路及代碼
創(chuàng)建好網(wǎng)頁時(shí),什么都沒有寫,但運(yùn)行時(shí)會(huì)發(fā)現(xiàn)源程序(View Source),下面一段,此刻,也許你會(huì)想起,在網(wǎng)頁有一個(gè)屬性EnableViewState,在某些時(shí)候我們并不需要它,接下來將介紹如何移除它,感興趣的朋友可以了解下啊2013-01-01