【发布时间】: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