gpt4 book ai didi

c# - FormsAuthenticationTicket 过期

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

我一直在网上搜索并找到了许多奇怪的答案,而且我几乎尝试了所有这些答案。我的问题是这样的。我的登录页面包含:

FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, userName, DateTime.Now, DateTime.Now.AddMinutes(min), persistCookie, userid.ToString());
string encTicket = FormsAuthentication.Encrypt(ticket);
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket);
cookie.Expires = ticket.Expiration;
Response.Cookies.Add(cookie);

FormsAuthentication.RedirectFromLoginPage(userName, persistCookie);

现在最小值是基于每个用户的,可以单独设置,persistCookie 也是如此。

根据我的理解,这段代码应该会导致覆盖 web.config 中的默认值的可能性。应该是 30 分钟。

<authentication mode="Forms">
<forms loginUrl="~/Default/default.aspx" defaultUrl="~/User/UserMain.aspx"/>
</authentication>

min 当前设置为 120,persistCookie 设置得太正确。当我登录时,我在 30 分钟时超时。 (不是 session ,所以在某个地方设置了到期日期,因为如果没有设置,cookie 应该是基于 session 的,我也没有得到 120 分钟,这是这里的交易)

为了简化问题,我的问题是如何让值“min”成为 cookie 的到期日期?

这可能是一件简单的事情,但我目前完全被困住了,所以我们会提供任何帮助。

编辑:我将登录逻辑更改为:

FormsAuthenticationTicket fat = new FormsAuthenticationTicket(1, userName, DateTime.Now, DateTime.Now.AddMinutes(min), persistCookie, userid.ToString());
string encTicket = FormsAuthentication.Encrypt(fat);
Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, encTicket) { Expires = fat.Expiration });
Response.Redirect(FormsAuthentication.GetRedirectUrl(userName, false));

现在可以了。但我似乎无法弄清楚为什么这会起作用,而不是前一个。票证创建是相同的,唯一的区别是我在创建 HttpCookie 时添加了 HttpCookie 的 Expires 属性,而不是在创建对象之后。

如果有人有好的解释,我洗耳恭听! :)

最佳答案

您的代码的问题是您正在调用 RedirectFromLoginPage,这将创建表单例份验证 cookie,覆盖您刚刚创建的 cookie:

HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket); 
cookie.Expires = ticket.Expiration;
Response.Cookies.Add(cookie);

FormsAuthentication.RedirectFromLoginPage(userName, persistCookie); <-- creates a new cookie

RedirectFromLoginPage 创建的 cookie 当然会有从配置中获取的默认超时。

你的第二个版本是要走的路。

关于c# - FormsAuthenticationTicket 过期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10773121/

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