gpt4 book ai didi

c# - ASP.NET Core 和 JWT token 生命周期

转载 作者:太空狗 更新时间:2023-10-29 20:58:10 24 4
gpt4 key购买 nike

我使用 ASP.NET Core 2.1.1

有趣的是,只有在提供两者 ClockSkew 时才会考虑过期时间 - 在 Startup.cs 中 JwtSecurityTokenHandler.TokenLifetimeInMinutes - 在 Controller 中

例如:

services
.AddJwtBearer(x =>
{
...
x.TokenValidationParameters = new TokenValidationParameters()
{
ClockSkew = TimeSpan.FromMinutes(90),
...

加上

...
public async Task<AuthenticateOutput> Authenticate([FromBody] AuthenticateInput input)
{
var tokenHandler = new JwtSecurityTokenHandler();
tokenHandler.TokenLifetimeInMinutes = (int)TimeSpan.FromMinutes(90).TotalMinutes;
...

如果我删除 tokenHandler.TokenLifetimeInMinutes = (int)TimeSpan.FromMinutes(90).TotalMinutes;
部分 - 使用默认过期时间。

在我看来,tokenHandler.TokenLifetimeInMinutes仍然是多余的,我只是误解了如何正确设置到期时间的概念。

我还尝试添加过期声明 - new Claim(ClaimTypes.Expiration, ...) - 但效果不大。

最佳答案

ClockSkew 属性与过期本身无关,它补偿了 clock skew .

要设置 token 过期时间,您必须在创建 token 时指定它:

new JwtSecurityToken(
...
expires: DateTime.UtcNow.AddMinutes(90),
....);

下面的代码会给你带标记的字符串:

var token = new JwtSecurityToken() { /* setup your token setting here*/ }
var tokenString = new JwtSecurityTokenHandler().WriteToken(token);

关于c# - ASP.NET Core 和 JWT token 生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51345705/

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