即使设置为非持久性,也会保存ASP.NET MVC 4身份验证cookie

时间:2018-10-17 21:57:58

标签: c# asp.net asp.net-mvc-4 cookies

我正在使用ASP.NET MVC 4(NET Framework 4.0)

由于某种原因,我的用户即使在浏览器或/和应用程序重新启动后仍保持登录状态。更进一步,即使在完全重新启动计算机之后,这也意味着身份验证cookie /票证仍然存在。 我不想在我的cookieless中使用Web.config属性,因为我不想为了安全和SEO问题而将cookie存储在URL中。

我不明白为什么会这样,我将身份验证cookie设置为不保留在FormsAuthentication.SetAuthCookie()方法中。

这是我的登录操作,isValid(username, password)是一种自定义方法,用于检查用户名和密码在模型中是否匹配。 db是我的数据库上下文。

    [AllowAnonymous]
    [HttpPost]
    public ActionResult LogIn(Employe user)
    {
        if (ModelState.IsValid)
        {
            if (IsValid(user.username, user.password))
            {
                FormsAuthentication.SetAuthCookie(user.username, false);
                Employe currentEmp = db.Employes.SingleOrDefault(emp => emp.username == user.username);
                Session["currentUser"] = currentEmp;
                return RedirectToAction("Index", "Home");
            }
            else
            {
                ModelState.AddModelError("", "Login Data Incorrect!");
            }
        }
        return View();
    }

这是我的Web.config

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

1 个答案:

答案 0 :(得分:0)

如果使用的是表单身份验证模式,则可以同时控制表单身份验证过期和自定义会话过期。那可能会使您的应用程序发生问题。 希望您能在这里How can I handle forms authentication timeout exceptions in ASP.NET?

找到解决方案