.net核心中的Jwt安全令牌的到期时间错误

时间:2018-11-26 07:29:39

标签: authentication jwt

我正在使用Jwt安全令牌进行身份验证。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CodeStuff
{
    public abstract class Automobile
    {
        public abstract void stuff();
    }
    public class Car : Automobile
    {
        public override void stuff()
        {
            Console.WriteLine("nice");
        }
    }

    class Program
    {
        public static void CarStuff(Automobile b)
        {
            b.stuff();
        }

        static void Main(string[] args)
        {
            Type ReadType = Type.GetType("CodeStuff.Car");
            Object obj = Activator.CreateInstance(ReadType);
            CarStuff((Automobile)obj);

            Console.ReadLine();
        }
    }
}

startup.cs

var token = new JwtSecurityToken(
            issuer: "mysite.com",
            audience: "mysite.com",
            notBefore: DateTime.Now,
            expires: DateTime.Now.AddDays(1),
            claims: claimsdata,
            signingCredentials: signInCred
            );

但是当我调试此代码时,我得到了以下时间

image

但是现在我的电脑时间是12:58 PM ....

请帮助我为令牌提供正确的到期时间。.

2 个答案:

答案 0 :(得分:2)

enter image description here Datetime。现在,JWT中的时间返回UTC时间。这就是为什么您无法获得当地时间。如果要更改为本地时间,请尝试将UTC时间更改为您的本地时间。

答案 1 :(得分:0)

我实现了以下片段,该片段解决了我的查询...

        var date = DateTime.Now.ToString();
        DateTime convertedDate = DateTime.SpecifyKind(
            DateTime.Parse(date),
            DateTimeKind.Utc);
        DateTime dt = convertedDate.ToLocalTime();