【发布时间】:2012-11-19 17:32:35
【问题描述】:
我在 Asp.Net MVC 应用程序中使用表单身份验证,如下所示:
代码
public void SignIn(string userName, bool isCookiePersistent)
{
FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(1, userName, DateTime.Now, DateTime.Now.AddDays(14),
createPersistentCookie, string.Empty);
HttpCookie authCookie = FormsAuthentication.GetAuthCookie(userName, isCookiePersistent);
if (authTicket.IsPersistent)
{
authCookie.Expires = authTicket.Expiration;
}
authCookie.Value = FormsAuthentication.Encrypt(authTicket);
HttpContext.Current.Response.Cookies.Add(authCookie);
}
public void SignOut()
{
FormsAuthentication.SignOut();
}
问题: 问题是,如果我将表单身份验证超时设置为 4 小时,我的用户在登录半小时后仍然重定向到登录页面。
我已经尝试在 web.config 中包括 SessionSate 或排除 SessionState,但注意到正在发生。问题仍然相同。这是我下面的 web.cofig 代码。
Web.config(无 sessionState 元素)
<authentication mode="Forms">
<forms loginUrl="~/LogOn/LogOn" requireSSL="false" timeout="240" defaultUrl="~/Home/Home" name="__appcookie" path="/" slidingExpiration="true" ticketCompatibilityMode="Framework40" protection="All">
</forms>
</authentication>
Web.config(带有 sessionState 元素)
<sessionState timeout="240"></sessionState>
<authentication mode="Forms">
<forms loginUrl="~/LogOn/LogOn" requireSSL="false" timeout="240" defaultUrl="~/Home/Home" name="__appcookie" path="/" slidingExpiration="true" ticketCompatibilityMode="Framework40" protection="All">
</forms>
</authentication>
有人可以告诉我在 web.config 中包含 sessionState 和 sessionTimeout 真的很重要吗?我不能在整个应用程序中只使用formAuthentication 吗?
无论我是否使用sessionState,即使只使用form authentication,我的用户在登录应用程序后半小时后重定向到登录页面。 (但我已经将 240 分钟设置为 form authentication timeout)。
谁能给我一些想法或解决方案。
提前致谢!
【问题讨论】:
-
还有空闲时间。您确定重定向是在用户处于活动状态时进行的吗?如果不是,您也必须将空闲时间设置为 4 小时。
标签: c# asp.net asp.net-mvc forms authentication