我需要不朽的 JWT 令牌。当然,我可以为 Expires 设置一些大的值,但我更喜欢在我的令牌中根本没有 exp 声明。标准.net core CreateEncodedJwt允许在expires、notBefore、issuedAt中传递null。我为所有这些传递 null,并且我的令牌包含 exp 令牌(+1 小时)。到底是怎么回事?!
var securityKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes("FF804E8A-2A0E-4F94-A6F5-8325822F8DF5"));
var claims = new List<Claim>
{
new Claim("type1", "value1"),
new Claim("type2", "value2")
};
var token = new JwtSecurityTokenHandler().CreateEncodedJwt(
issuer: null,
audience: null,
subject: new ClaimsIdentity(claims),
notBefore: null,
issuedAt: null,
expires: null,
signingCredentials: new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256));
Run Code Online (Sandbox Code Playgroud)
这是解析工具: https: //jwt.io
这是我的令牌:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0eXBlMSI6InZhbHVlMSIsInR5cGUyIjoidmFsdWUyIiwibmJmIjoxNTY1NDI5MzY2LCJleHAiOjE1NjU0MzI5NjYsImlhdCI6MTU2NTQyOTM2Nn0.U vJiOQNO_yMzdenf5jAotPHj7zrcEUApraezzcVSicA
里面是这样的:
{“类型1”:“值1”,“类型2”:“值2”,“nbf”:1565429366,“exp”:1565432966,“iat”:1565429366}
请帮助摆脱 nbf、exp、iat。提前致谢!
这对我来说很奇怪,但你可以试试这个简短的代码:
var num1 = BigInteger.Parse("1e+9999", NumberStyles.AllowExponent);
var num2 = BigInteger.Parse("1e+9998", NumberStyles.AllowExponent);
var div = num1 / num2; // is 1, but must be 10
var eq = num1 == num2; // true, but must be false
Run Code Online (Sandbox Code Playgroud)
建议?