Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我如何评估ClaimsPrincipal的过期日期?_C#_.net_Claims Based Identity - Fatal编程技术网

C# 我如何评估ClaimsPrincipal的过期日期?

C# 我如何评估ClaimsPrincipal的过期日期?,c#,.net,claims-based-identity,C#,.net,Claims Based Identity,我正在尝试读取.NET服务器应用程序中ClaimsPrincipal的过期日期 我想我知道如何获得它: Claim exp = accessClaimsPrincipal.FindFirst("exp"); 这给了我一个索赔对象。我可以得到Claim对象的.Value,它给了我一个字符串。但是,我需要的是一个DateTime对象。如何将此声明转换为日期时间?根据,is应该是一个数字日期值(也称为记号)。e、 g.637553398040000000 “exp”(过期时间)声

我正在尝试读取.NET服务器应用程序中ClaimsPrincipal的过期日期

我想我知道如何获得它:

Claim exp = accessClaimsPrincipal.FindFirst("exp");
这给了我一个索赔对象。我可以得到Claim对象的.Value,它给了我一个字符串。但是,我需要的是一个DateTime对象。如何将此声明转换为日期时间?

根据,is应该是一个数字日期值(也称为记号)。e、 g.637553398040000000

“exp”(过期时间)声明标识上的过期时间 或之后,不得接受JWT进行处理。这个 处理“exp”索赔要求当前日期/时间 必须在“exp”索赔中列出的到期日期/时间之前

实施者可能会提供一些小的回旋余地,通常不超过 几分钟,以解释时钟偏移。它的值必须是一个数字 包含NumericDate值的。此声明的使用是可选的

因此,在转换为
DateTime之前,它需要对
long
进行解析

Claim exp = accessClaimsPrincipal.FindFirst("exp");
var expDate = new DateTime(long.Parse(exp.Value));

备选方案:如果字符串值有时区(或者您知道时区),请使用DateTimeOffset。@gunr2171值得注意,但可能与答案无关。另外,我不建议您使用
DateTimeOffset
,除非您正在实际处理偏移量。。。如果我想提高对这件事的关注或意识,我只是想提请大家注意
DateTimeKind
——处理与解析相关的未指定、UTC或本地数据。事实上,我收回了这一点。。根据应用程序开发的默认值应该是
DateTimeOffset
——这似乎也是一个很好的场景,因为在这里您不会接受模糊性。因此,我同意,与
DateTime
类型相反,通过引用和
DateTimeOffset
类型,这个答案可能会得到改进。对不起,评论太冗长了。