ASP.NET|ASP.NET Core 实现自动刷新JWT Token
目录
- 原理
- 实现
- 结论
为了安全性考虑,我们可以设置JWT Token较短的过期时间,但是这样会导致客户端频繁地跳到登录界面,用户体验不好。
【ASP.NET|ASP.NET Core 实现自动刷新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)); //刷新Tokenif (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 自动刷新 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- 算法设计(如何实现二叉树删除操作(代码实现))
- 基于Android移动终端的微型餐饮管理系统的设计与实现1-简介
- android MediaCodec 音频编解码的实现——转码
- Android使用BaseAdapter实现复杂的ListView
- 后缀树应用6(最长回文子串详细实现代码)
- 算法设计(如何查找矩阵中的最大元素(详细实现))
- 腾讯二面(现在要你实现一个埋点监控SDK,你会怎么设计())
- Casdoor|Casdoor + OAuth 实现单点登录 SSO
- Android 手机卫士--平移动画实现
- 如何实现最近最少使用(LRU)页面替换算法程序()