表单身份验证随会话过期

时间:2016-02-01 14:36:23

标签: asp.net asp.net-mvc session authentication cookies

每当用户登录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随会话到期。 我不明白。

firebug

如何控制Cookie的生命周期?

目标是不要求用户每天早上登录。

1 个答案:

答案 0 :(得分:1)

我对the documentation的理解是,您对预期的行为是正确的,并且将persistanceFlag设置为true应该将cookie的过期时间设置为与的过期时间相同的值令牌。

但是,值得注意的是,令牌过期 的设置正确,即使cookie过期似乎没有。这意味着,一旦过期,尽管客户端仍将cookie发送给服务器,但是服务器将不会接受它作为身份验证的形式,并且用户将不得不重新进行身份验证。有鉴于此,我不确定超时后cookie不会过期(即使看起来确实应该如此)也没有关系。