第一步:创立refreshToken中间件
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(-5) <= DateTime.UtcNow)
{
context.Response.Headers.Add("X-Refresh-Token", await RefreshTokenAsync(token));
}
await next(context);
}
第二步:再axios插件的Response拦截器中解决HttpResponse中携带的新token