在ASP.NET MVC2应用程序中,我们有标准的登录操作...
if (ValidateUser(model.Email, model.Password)
{
FormsAuthentication.SetAuthCookie(model.Email, model.RememberMe);
...
其中SetAuthCookie的第二个参数是createPersistentCookie
,其中包含以下文档:
createPersistentCookie
Type: System.Boolean
true to create a persistent cookie
(one that is saved across browser sessions); otherwise, false.
我们希望持久性cookie在2周后过期(即,用户可以在2周内返回该站点,而不需要重新进行身份验证。在此之后,他们将被要求再次登录)。 / p>
我们如何设置持久性cookie的到期时间?
答案 0 :(得分:36)
你能不这样做吗?
<system.web>
<authentication mode="Forms">
<forms timeout="20160"/>
</authentication>
</system.web>
超时以分钟为单位。
此超时值与您是否创建持久性cookie无关。它只是说如果你没有明确地终止cookie(FormsAuthentication.SignOut),它将在给定的时间段后自动过期。
换句话说,如果你这样做:
FormsAuthentication.SetAuthCookie(someMembershipName, false);
在以下情况下会导致Cookie过期:
与你相反:
FormsAuthentication.SetAuthCookie(someMembershipName, true);
将导致cookie仅在达到超时时到期。
HTH
修改强>:
从MSDN获取:
超时属性描述如下:
以整数指定时间 分钟,之后的cookie 到期。如果是SlidingExpiration 属性为true,超时 attribute是一个滑动值,即将到期 在指定的分钟数 在最后一次请求之后 收到了。为了防止妥协 性能,并避免多重 有用户的浏览器警告 Cookie警告已打开,Cookie 当超过一半的时候更新 指定的时间已过。这有可能 导致精度下降。默认 是“30”(30分钟)。
注意在ASP.NET V1.1下持久化 饼干不会超时,无论如何 超时属性的设置。 但是,从ASP.NET V2.0开始, 持久性cookie会耗尽时间 根据超时属性。
换句话说,此过期设置仅处理表单身份验证cookie。
表单身份验证cookie是一个客户端cookie,它与您可能拥有的其他服务器端会话无关(即购物车)。
该会话已过期,具有以下设置:
<sessionstate
mode="inproc"
cookieless="false"
timeout="20"