gpt4 book ai didi

c# - 表单认证slidingExpiration不起作用

转载 作者:太空狗 更新时间:2023-10-29 23:20:07 29 4
gpt4 key购买 nike

我有以下代码

int intTimeout = (FormsAuthentication.Timeout.Hours * 60) +
FormsAuthentication.Timeout.Minutes;
var authTicket = new FormsAuthenticationTicket(1, Utility.userCookie, DateTime.Now,
DateTime.Now.AddMinutes(intTimeout), true, cookieValue);

string strEncryptedTicket = HttpUtility.UrlEncode(FormsAuthentication.Encrypt(authTicket));
var authCookie = new HttpCookie(Utility.userCookie, strEncryptedTicket);
authCookie.Expires = authTicket.Expiration;
//FormsAuthentication.RedirectFromLoginPage("", false);
authCookie.Secure = FormsAuthentication.RequireSSL;
//authCookie.Secure = true;

HttpContext.Current.Response.Cookies[Utility.userCookie].Expires = authTicket.Expiration;
HttpContext.Current.Response.Cookies[Utility.userCookie].Value = authCookie.Value;

低于web.config

<authentication mode="Forms">
<forms timeout="2" slidingExpiration="true" requireSSL="true" />
</authentication>

我一直点击页面链接,它仍然在 2 分钟后过期

最佳答案

请注意 web.config基于自定义表单的身份验证的结构:

<forms 
name="name"
loginUrl="URL"
defaultUrl="URL"
protection="[All|None|Encryption|Validation]"
timeout="[MM]"
path="path"
requireSSL="[true|false]"
slidingExpiration="[true|false]">
enableCrossAppRedirects="[true|false]"
cookieless="[UseUri|UseCookies|AutoDetect|UseDeviceProfile]"
domain="domain name"
ticketCompatibilityMode="[Framework20|Framework40]">
<credentials>...</credentials>
</forms>

如您所见,timeout 属性根据您将其设置为 2(例如 2 分钟)的分钟数工作。

通常,如果您在 web.config 中启用 slidingExpiration您无需手动重新生成新的 cookie。对于您的场景,我建议您使用跟踪工具,例如 fiddler 。当你刷新页面时,你可以从Fiddler中查看是否重置了cookie过期时间。

我在 Weird Timeouts With Custom ASPNETFormsAuthentication 中找到了一个很好的例子这可以为您做一些清理工作。

关于c# - 表单认证slidingExpiration不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49254434/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com