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>
在这种情况下,我该从哪里开始研究?我发现了一个错误吗?
答案 0 :(得分:1)
据我所知,一切似乎都很好,但是,您的问题可能与您使用持久性 Cookie有关吗?我认为持久性cookie并不意味着超时,这就是为什么你可能会使用它们。
尝试使用非持久性的,并查看是否有效:
FormsAuthentication.SetAuthCookie(username, false);
此外,还有一些其他感兴趣的说明:
slidingExpiration="true"
元素上添加<forms/>
条目。答案 1 :(得分:0)
您正在使用什么类型的会话模式?如果您正在使用非持久性cookie并且应用程序池回收,那么会话将丢失。