每当用户登录ASP.NET MVC应用程序时,我都会像这样设置Forms auth cookie:
var authTicket = new FormsAuthenticationTicket(
1, //version
user.Email, // user name
DateTime.Now, //creation
DateTime.Now.AddDays(1), //Expiration
persistanceFlag, //Persistent
userData);
var encTicket = FormsAuthentication.Encrypt(authTicket);
var authCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket);
Response.Cookies.Add(authCookie);
当用Firebug检查饼干时,我预计饼干的到期时间为24小时。 相反,Firefox报告cookie随会话到期。 我不明白。
如何控制Cookie的生命周期?
目标是不要求用户每天早上登录。
答案 0 :(得分:1)
我对the documentation的理解是,您对预期的行为是正确的,并且将persistanceFlag
设置为true
应该将cookie的过期时间设置为与的过期时间相同的值令牌。
但是,值得注意的是,令牌过期 的设置正确,即使cookie过期似乎没有。这意味着,一旦过期,尽管客户端仍将cookie发送给服务器,但是服务器将不会接受它作为身份验证的形式,并且用户将不得不重新进行身份验证。有鉴于此,我不确定超时后cookie不会过期(即使看起来确实应该如此)也没有关系。