当我在 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 并且在所有区域设置上都很稳定,因此它非常适合以最大精度序列化日期和时间。