我只是对一件事有点困惑。在创建表单身份验证票证时,我一直在使用以下代码。
var ticket = new FormsAuthenticationTicket(1,
userName,
DateTime.Now,
DateTime.Now.AddMinutes(30),
rememberMe,
userData,
FormsAuthentication.FormsCookiePath);我的问题是。如本例所示,我应该使用DateTime.Now还是DateTime.UtcNow?
发布于 2012-11-13 19:18:23
服务器使用此值来检测会话过期。因此,在创建票证和检查票证时必须使用相同的时区。使用DateTime.Now。
顺便说一句,如果适用于你的情况,它更容易做到
FormsAuthentication.SetAuthCookie("username", true);发布于 2014-11-22 05:48:46
我可能弄错了,但我相信你应该使用DateTime.UtcNow,因为基于这段源代码,过期标志会检查UTC。现在有一大堆注释解释了他们何时尝试将本地时间转换为UTC,但此注释的第一行声明:
我们总是倾向于协调世界时的到期日,而不是像夏令时这样的问题,在票证发出时间和检查时间之间发生变化。如果我们有一个固定的UTC到期日期,只需直接使用它。
http://referencesource.microsoft.com/#System.Web/Security/FormsAuthenticationTicket.cs,84
所以我建议将DateTime.UtcNow传递给票证构造函数。
https://stackoverflow.com/questions/13359793
复制相似问题