如何在Core 2.0中将Datetime序列化为AspNetUserTokens表中 ASP.NET 字符串?



当我在 ASP.NET Core 中使用 OAuth2 时,中间件将日期时间转换为字符串,结果如下所示

2019-05-27T13:07:49.0000000+00:00

然后我正在手动刷新访问令牌,我想复制此行为。是否有任何定义的方法来将 DateTime 值序列化为字符串,以便随后写入 AspNetUserTokens 表?

我知道我可以使用 DateTime.ToString 并通过分析 2019-05-27T13:07:49.0000000+00:00 字符串来创建格式,但我最好更喜欢使用更优雅的东西,而不是依赖于特定的格式细节。 也就是说,如果明天他们要更改格式中的某些内容,我将使用更高级别的调用,该调用将与更改的实现保持兼容。

实际上,我看到expires_at值已经是googleOptions.Events.OnCreateatingTicket中的tokens"2019-05-27T13:07:49.0000000+00:00"字符串

googleOptions.Events.OnCreatingTicket = ctx =>
{
List<AuthenticationToken> tokens = ctx.Properties.GetTokens().ToList();
return Task.CompletedTask;
};

因此,这种序列化甚至在将数据放入数据库之前就已经完成。我需要找出他们是如何做到的,并使用相同的调用(如果可能的话)。

该格式是"往返日期/时间模式":

var date = DateTime.Now;
Console.WriteLine(date.ToString("o")); // 2019-05-27T14:34:02.8029466+02:00

由于这种格式非常详细,同时符合 ISO 8601 并且在所有区域设置上都很稳定,因此它非常适合以最大精度序列化日期和时间。

最新更新