【问题标题】:ASP.NET MVC 4 authentification cookie is saved even if set as not persistentASP.NET MVC 4 身份验证 cookie 被保存,即使设置为非持久性
【发布时间】:2019-03-22 16:24:08
【问题描述】:

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

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

我不明白为什么会这样,我已将身份验证 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>

【问题讨论】:

  • 可能是浏览器存储了凭据。如果是这样,您将无能为力。
  • 我已经在两种不同的浏览器(Firefox 开发者和 Chrome)上进行了尝试,行为相同。
  • 我设法找到了解决方法,但是我想了解问题背后的原因,所以我暂时暂缓。
  • 希望您能在这里找到解决方案。 stackoverflow.com/questions/7586469/…

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


【解决方案1】:

如果你使用表单认证模式,有一种情况是同时控制表单认证过期和自定义会话过期。这可能会使您的应用程序发生问题。 希望你能在这里找到解决方案How can I handle forms authentication timeout exceptions in ASP.NET?

【讨论】:

  • 这不是问题。问题不在于调整会话或身份验证票证超时,而是理解为什么它仍然存在,即使我明确设置为不这样做。
猜你喜欢
  • 2013-08-26
  • 2012-08-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-24
  • 1970-01-01
  • 1970-01-01
  • 2017-10-26
  • 1970-01-01
相关资源
最近更新 更多