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

发布于 2024-08-17 02:15:47 字数 1111 浏览 2 评论 0原文

我有一个测试项目,web.config 中指定的表单超时推翻了我在 FormsAuthenticationTicket 中设置的超时。根据文档,FormsAuthenticationTicket 中的超时(到期日期)必须覆盖 web.config 中的超时。

文档位于:http://support.microsoft.com/kb/910443 如果票证是使用 FormsAuthenticationTicket 类手动生成的,则可以通过 Expiration 属性设置超时。该值将覆盖配置文件中指定的超时属性值。

这是我的代码:

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 分钟后我必须被重定向。

有人可以解释一下吗?

I have a testproject and the forms timeout specified in web.config overrules the timeout which I set in FormsAuthenticationTicket. According the documentation, the timeout (expire date) in FormsAuthenticationTicket must override the timeout in web.config.

Documentation found on: 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.

Here is my code:

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);

Now, when I login, i get redirected after 1 minute of inactivity. This isn't supposed to happen, right? I have to be redirected after 2 minutes.

Someone can explain this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

萌梦深 2024-08-24 02:15:47

我认为对 RedirectFromLoginPage 的调用会覆盖您的 cookie。您可以尝试使用这个来代替。

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

此处可能有用的其他信息: https://web.archive.org/web/20210513002246/https://www.4guysfromrolla.com/webtech/110701-1.3.shtml

I think the call to RedirectFromLoginPage is overwriting your cookie. You can try using this instead.

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

Additional information that might be useful here: https://web.archive.org/web/20210513002246/https://www.4guysfromrolla.com/webtech/110701-1.3.shtml

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文