亦余心之所善兮,虽九死其犹未悔。这篇文章主要讲述ASP.NET Core 自动刷新JWT Token #yyds干货盘点#相关的知识,希望能为你提供帮助。
为了安全性考虑,我们可以设置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替换掉,下次发送请求就是用最新的token了。
实现创建一个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 #yyds干货盘点#】?想了解更多内容,请关注我的个人公众号”My IO“
推荐阅读
- Python 从底层结构聊 Beautiful Soup4(内置豆瓣最新电影排行榜爬取案例)!
- 游戏开发新手入门教程13:从想法到设计的过程
- 多图预警! Multi-HeadAttention | 多头注意力#51CTO博主之星评选#
- #yyds干货盘点#剑指 Offer 04. 二维数组中的查找
- #yyds干货盘点# 解决华为机试(配置文件恢复)
- 在 Flutter 中使用 NavigationRail 和 BottomNavigationBar
- 全面解读 AWS Private 5G 的革新理念
- 你在51CTO博客留下了哪些足迹(悟空熊时光机,带你开启专属回忆)
- 数据库与缓存数据一致性解决方案