我正在使用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>
答案 0 :(得分:0)
如果使用的是表单身份验证模式,则可以同时控制表单身份验证过期和自定义会话过期。那可能会使您的应用程序发生问题。 希望您能在这里How can I handle forms authentication timeout exceptions in ASP.NET?
找到解决方案