JwtSecurityToken的日期与SecurityTokenDescriptor不同

时间:2017-03-03 10:03:55

标签: c# datetime token

我正在实施mechanizm来管理我的应用程序中的令牌 我使用这样的代码来创建JwtSecurityToken

var securityTokenDescriptor = new SecurityTokenDescriptor()
{
    Subject = claims,
    SigningCredentials = signingCredentials,
    Expires = DateTime.UtcNow.AddMinutes(ACCESS_TOKEN_LENGHT_MINUTES),
    IssuedAt = DateTime.UtcNow
};

var tokenJwt = tokenHandler.CreateJwtSecurityToken(securityTokenDescriptor);

意外地,'tokenJwt'中的日期与securityTokenDescriptor

中的日期不同

'ValidTo'与'Expires'和'ValidFrom'与'IssuedAt'在一个小时内有所不同。

我认为这与夏季/冬季时间(目前是冬季时间)或事实之间的时间变化有关,我住在UTC +1:00时区。

我尝试使用DateTime.Now和DateTime.UtcNow,但两者都有同样的问题

有谁知道为什么会这样发生并知道这些问题的解决方案?

1 个答案:

答案 0 :(得分:1)

我遇到了类似的问题,我找到了解决方案。

而不是使用

IssuedAt = DateTime.UtcNow

您想要使用

NotBefore = DateTime.UtcNow

好像是

SecurityToken.ValidFrom

从NotBefore字段中获取其值,如果您不提供,则会自动生成一个。

希望这有帮助。