救命!为什么我的IE用户会被随机注销?

时间:2010-07-15 09:31:36

标签: c# asp.net-mvc authentication

ASP.NET MVC 2.0,这是我的身份验证码:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Login(string username, string password, string returnUrl) {
    if (ModelState.IsValid) {
        // Attempt to login
        var loginSuccessful = provider.ValidateUser(username, password);

        if (loginSuccessful) {
            FormsAuthentication.SetAuthCookie(username, true);
            if (!String.IsNullOrEmpty(returnUrl))
                return Redirect(returnUrl);


            return RedirectToAction("Index", "Home");

        }
    }
    return View(Language + "/Login", Vd);
}

非常简单的默认身份验证。适用于登录。但是,IE用户会随机自动注销,即使他们在网站上处于活动状态。其他浏览器工作正常。这是来自web.config的表单auth:

<authentication mode="Forms">
    <forms loginUrl="~/en/Account/Login" timeout="2880"/>
</authentication>

在这种情况下,我该从哪里开始研究?我发现了一个错误吗?

2 个答案:

答案 0 :(得分:1)

据我所知,一切似乎都很好,但是,您的问题可能与您使用持久性 Cookie有关吗?我认为持久性cookie并不意味着超时,这就是为什么你可能会使用它们。

尝试使用非持久性的,并查看是否有效:

FormsAuthentication.SetAuthCookie(username, false);

此外,还有一些其他感兴趣的说明:

  • 我认为web.config中的timeout属性是以分钟为单位指定的。你已经指定了超过2000分钟。
  • 默认情况下,滑动过期时间被禁用,因此在n分钟后它仍会超时。如果这不是您想要的,请在web.config中的slidingExpiration="true"元素上添加<forms/>条目。

答案 1 :(得分:0)

您正在使用什么类型的会话模式?如果您正在使用非持久性cookie并且应用程序池回收,那么会话将丢失。