JwtSecurityToken到期日相隔两个小时

时间:2018-04-27 12:00:25

标签: api jwt

在我的.net核心api应用程序中,我使用:

var dt = DateTime.Now.AddMinutes(60); // time is 2018-04-27 14:49:00

var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config["Tokens:Key"]));
var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);

var claims = new[]
              {
                 new Claim(JwtRegisteredClaimNames.Sub, user.Email),
                 new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
                 new Claim(JwtRegisteredClaimNames.UniqueName, user.UserName)
              };

var token = new JwtSecurityToken(
        _config["Tokens:Issuer"], 
        _config["Tokens:Audience"], 
        claims,
        expires: dt,
        signingCredentials: creds);

token.ValidTo显示为2018-04-27 12:49:00 ...

为什么?

1 个答案:

答案 0 :(得分:1)

这是因为时区不同。您的时区可能是UTC + 2,而您的变量import pandas as pd import os df_chunked = pd.read_csv("myLarge.csv", chunksize=30000) # you can alter the chunksize for chunk in df_chunked: uniques = chunk['col'].unique().tolist() for val in uniques: df_to_write = chunk[chunk['col'] == val] if os.path.isfile('small_{}.csv'.format(val)): # check if file already exists df_to_write.to_csv('small_{}.csv'.format(val), mode='a', index=False, header=False) else: df_to_write.to_csv('small_{}.csv'.format(val), index=False) 包含当地时间的时间。

JwtSecurityToken.ValidTodt值,其中包含UTC时间。生成的JWT将为您提供基于Unix纪元时间的值(exp claim),以秒为单位,正好是1970-01-01 00:00 UTC。 在您的情况下,DateTime将是

  

1524833340

等于

  

2018-04-27 12:49:00 UTC(14:49 in UTC + 2)

因为你可以检查here并且JWT框架知道如何处理它,独立于时区。

行为正确,您无需更改任何内容。