Ale*_*man 6 c# authentication token jwt asp.net-core
我利用 ASP.NET Core 2.1.1
有趣的是,过期时间只被考虑到,当一个提供两个 ClockSkew - 在Startup.cs 和 JwtSecurityTokenHandler.TokenLifetimeInMinutes - 在控制器.
例如:
services
.AddJwtBearer(x =>
{
...
x.TokenValidationParameters = new TokenValidationParameters()
{
ClockSkew = TimeSpan.FromMinutes(90),
...
Run Code Online (Sandbox Code Playgroud)
加
...
public async Task<AuthenticateOutput> Authenticate([FromBody] AuthenticateInput input)
{
var tokenHandler = new JwtSecurityTokenHandler();
tokenHandler.TokenLifetimeInMinutes = (int)TimeSpan.FromMinutes(90).TotalMinutes;
...
Run Code Online (Sandbox Code Playgroud)
如果我删除tokenHandler.TokenLifetimeInMinutes = (int)TimeSpan.FromMinutes(90).TotalMinutes;
部分 - 使用默认的到期时间.
在我看来,这仍然tokenHandler.TokenLifetimeInMinutes是多余的,我只是误解了如何正确设置到期时间的概念.
我也试过添加到期声明 - new Claim(ClaimTypes.Expiration, ...)但这没有太大作用.
Ale*_*bov 17
ClockSkew属性不是关于到期本身,它补偿时钟偏差.
要设置令牌过期,您必须在令牌创建时指定它:
new JwtSecurityToken(
...
expires: DateTime.UtcNow.AddMinutes(90),
....);
Run Code Online (Sandbox Code Playgroud)
以下代码将为您提供带令牌的字符串:
var token = new JwtSecurityToken() { /* setup your token setting here*/ }
var tokenString = new JwtSecurityTokenHandler().WriteToken(token);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9307 次 |
| 最近记录: |