web.config中的C#Formsauthentication超时否决了手动票证超时?

时间:2010-01-07 12:43:36

标签: c# asp.net forms-authentication

我有一个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分钟后重定向。

有人可以解释一下吗?

1 个答案:

答案 0 :(得分:0)

我认为调用RedirectFromLoginPage会覆盖你的cookie。您可以尝试使用它。

Response.Redirect( FormsAuthentication.GetRedirectUrl( UserName.Text, chkPersistCookie.Checked );

此处可能有用的其他信息:http://www.4guysfromrolla.com/webtech/110701-1.3.shtml