viv*_*una 5 c# jwt asp.net-core asp.net-core-3.1
我已将令牌过期时间设置为 1 分钟,但 1 分钟后我没有收到 401 未经授权的错误。
启动.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"]))
};
});
Run Code Online (Sandbox Code Playgroud)
代币生成方法:
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);
Run Code Online (Sandbox Code Playgroud)
juu*_*nas 12
正如我们在评论中讨论的,这是由于时钟偏差设置默认为 5 分钟,允许令牌在过期后最多 5 分钟被视为有效(从验证令牌的服务器的角度来看)。存在时钟偏差设置是因为发出令牌的服务器和验证令牌的服务器的时钟可能略有不同。通常,在这里有一些灵活性是个好主意,默认 5 分钟就可以了。如果您不希望出现此行为,可以将 TokenValidationParameters 上的 ClockSkew 设置为 0 秒。
| 归档时间: |
|
| 查看次数: |
4843 次 |
| 最近记录: |