【发布时间】:2019-03-22 05:03:22
【问题描述】:
我在向浏览器发送 HttpCookie 过期时遇到问题,我使用 DateTime.Now 设置它,但在各种浏览器中出现了不同的值。
这是代码和浏览器中显示的内容。
PS:我测试了以下浏览器(Chrome、Firefox 和 Edge),都出现了同样的问题。
var expiration = DateTime.Now.AddMinutes(30);
var authTicket = new FormsAuthenticationTicket(1, usr.Id.ToString(), DateTime.Today, expiration, true, string.Empty);
string encryptedTicket = FormsAuthentication.Encrypt(authTicket);
var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket)
{
Secure = Request.RequireSSL(),
Path = FormsAuthentication.FormsCookiePath,
Domain = FormsAuthentication.CookieDomain,
Expires = authTicket.Expiration
};
Response.Cookies.Add(cookie);
【问题讨论】:
-
DateTime.UtcNow? -
expiration是否匹配authTicket.Expiration? -
时差是多少?你在哪个时区?
-
我的时区是巴西的,我已经用 UtcNow 试过了,但它不起作用。差异比我想要的多 10 小时左右。
-
@DanWilson 是的,我在 FormsAuthenticationTicket 的创建中设置了 authTicket.Expiration
标签: c# session-cookies forms-authentication utc httpcookie