我有一个testproject,web.config中指定的表单超时超过了我在FormsAuthenticationTicket中设置的超时。根据文档,FormsAuthenticationTicket中的超时(到期日期)必须覆盖web.config中的超时。
在http://support.microsoft.com/kb/910443上找到的文档
If the ticket is generated manually by using the FormsAuthenticationTicket class, the time-out can be set through the Expiration attribute. This value will override the timeout attribute value specified in configuration files.
这是我的代码:
的Web.config:
<authentication mode="Forms">
<forms
timeout="1"
loginUrl="login.aspx"
name="sessionTest"
cookieless="UseCookies"
defaultUrl="default.aspx"
/>
</authentication>
Login.aspc.cs:
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(Login1.UserName, false, 2);
string encryptedTicket = FormsAuthentication.Encrypt(ticket);
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
Response.Cookies.Add(cookie);
// redirect user
FormsAuthentication.RedirectFromLoginPage(Login1.UserName, false);
现在,当我登录时,我会在1分钟不活动后重定向。这不应该发生,对吗?我必须在2分钟后重定向。
有人可以解释一下吗?
答案 0 :(得分:0)
我认为调用RedirectFromLoginPage会覆盖你的cookie。您可以尝试使用它。
Response.Redirect( FormsAuthentication.GetRedirectUrl( UserName.Text, chkPersistCookie.Checked );
此处可能有用的其他信息:http://www.4guysfromrolla.com/webtech/110701-1.3.shtml