gpt4 book ai didi

c# - JWT token 过期在 Asp.Net Core API 中不起作用?

转载 作者:行者123 更新时间:2023-12-05 00:56:42 25 4
gpt4 key购买 nike

我已将 token 到期时间设置为 1 分钟,但 1 分钟后我没有收到 401 未授权错误。

Startup.cs

.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = Configuration["Jwt:Issuer"],
ValidAudience = Configuration["Jwt:Issuer"],
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Jwt:Key"]))
};
});

token 生成方法:

var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["Jwt:Key"]));
var credentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256);
int expiryMins = 1
var token = new JwtSecurityToken(_configuration["Jwt:Issuer"],
_configuration["Jwt:Issuer"],
null,
expires: DateTime.UtcNow.AddMinutes(expiryMins),
signingCredentials: credentials);

return new JwtSecurityTokenHandler().WriteToken(token);

最佳答案

正如我们在评论中所讨论的,这是由于时钟偏差设置默认为 5 分钟,允许 token 在过期后最多 5 分钟内被视为有效(从验证 token 的服务器的角度来看)。存在时钟偏差设置是因为发出 token 的服务器和验证 token 的服务器的时钟可能略有不同。通常在这里有一些灵 active 是个好主意,默认的 5 分钟是可以的。如果您不希望出现这种情况,可以将 TokenValidationParameters 上的 ClockSkew 设置为 0 秒。

关于c# - JWT token 过期在 Asp.Net Core API 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61909514/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com