【发布时间】:2014-03-26 02:43:06
【问题描述】:
我想在我的自定义登录控件中添加“保持登录”选项。
这是我当前使用会话的方式:
我正在手动保存和读取来自HttpContext.Current.Session["key"] 的值。工作正常。
web.config 的相关部分:
<sessionState mode="StateServer" useHostingIdentity="true" cookieless="false" timeout="120" stateConnectionString="tcpip=127.0.0.1:42424" />
<authentication mode="Forms">
<forms loginUrl="/login" name="AuthCookie" timeout="120" slidingExpiration="true" path="/" />
</authentication>
<authorization>
<allow users="*" />
</authorization>
如您所见,会话的默认持续时间为 120 分钟。
“退出”:
Session.Clear();
Session.Abandon();
通过带有文本框的自定义登录控件,我授予对成员区域的访问权限。 (我不使用System.Web.Security.FormsAuthentication)
输入有效凭据并选中“保持登录”复选框后,我想将已经活动的会话的持续时间增加到约 30 天。
到目前为止,我已经找到了类似的解决方案
FormsAuthenticationTicket fat = new FormsAuthenticationTicket(1, "username", DateTime.Now, DateTime.Now.AddMinutes(1), false, "username");
string encTicket = FormsAuthentication.Encrypt(fat);
Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, encTicket) { Expires = fat.Expiration });
这不起作用,因为 System.Web.Security.FormsAuthentication.Timeout 仍然是 120 分钟。 设置也是如此
Session.Timeout = 666;
有什么建议吗?
【问题讨论】: