700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > ASP.NET Core 自动刷新JWT Token

ASP.NET Core 自动刷新JWT Token

时间:2020-04-27 13:44:41

相关推荐

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替换掉,下次发送请求就是用最新的token了。

实现

创建一个Middleware,它的作用是检查JWT Token过期时间并生成新token返回:

publicasyncTaskInvokeAsync(HttpContextcontext){JwtSecurityTokentoken=null;stringauthorization=context.Request.Headers["Authorization"];if(!string.IsNullOrEmpty(authorization)&&authorization.StartsWith("Bearer"))token=newJwtSecurityTokenHandler().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",awaitRefreshTokenAsync(token));}await_next(context);}

结论

当然,推荐大家尽量使用refresh_token的方式,毕竟这样安全性会更高一些。

想了解更多内容,请关注我的个人公众号”My IO“

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。