JWT 令牌过期未设置为所需时间
Posted
技术标签:
【中文标题】JWT 令牌过期未设置为所需时间【英文标题】:JWT token Expiration is not getting set to the required time 【发布时间】:2020-08-18 06:36:48 【问题描述】:我在我的 .Net Core 应用程序中使用 JWT,并且我正在使用 System.IdentityModel.Tokens.Jwt (5.6.0) 我正在尝试将过期时间设置如下:
var token = new JwtSecurityToken(
"www.site.com",
"www.site.com",
claims,
expires: DateTime.UtcNow.AddMinutes(5),
signingCredentials: credentials);
我的电脑时间是下午 2.38 点,令牌验证到属性的值是晚上 9.43 点。 必须是下午 2.43 点。
我的 Startup.cs 配置如下:
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
options.TokenValidationParameters = new TokenValidationParameters
ClockSkew = TimeSpan.Zero,
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = Configuration["Authentication:Issuer"],
ValidAudience = Configuration["Authentication:Issuer"],
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Authentication:Secret"]))
;
);
这是什么原因? 谢谢您的帮助。
【问题讨论】:
【参考方案1】:您居住的时区为 UTC -7。 DateTime.UtcNow
返回 UTC 时间,请改用DateTime.Now
。
【讨论】:
以上是关于JWT 令牌过期未设置为所需时间的主要内容,如果未能解决你的问题,请参考以下文章