gpt4 book ai didi

c# - FormsAuthenticationTicket isPersistent 属性的用途是什么?

转载 作者:IT王子 更新时间:2023-10-29 04:44:43 27 4
gpt4 key购买 nike

我正在努力了解 FormsAuthenticationTicket 类中的 isPersistent 属性的用途。 http://msdn.microsoft.com/en-us/library/kybcs83h.aspx

  1. 是否存在设置 isPersistent 有效的场景?
  2. 在什么情况下我希望将 isPersistent 设置为 true 和 false?

该属性似乎是多余的,因为我发现在浏览器 session 中保留我的用户身份验证 cookie 的唯一方法是设置创建票证后创建的 cookie 的 Expires 属性;即使门票的 isPersistent 值设置为 false

我还发现将 isPersistent 设置为 true 的票证到期时间(不是 cookie)设置为大约 10 秒几乎没有效果;票在 10 秒后过期。

FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1,
identity.Name,
DateTime.Now,
DateTime.Now.AddMinutes(FormsAuthentication.Timeout.TotalMinutes),
isPersistent,
JsonSerializerService.ToJson(identity),
FormsAuthentication.FormsCookiePath);

string encryptedTicket = FormsAuthentication.Encrypt(ticket);

var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);

cookie.Path = FormsAuthentication.FormsCookiePath;

cookie.Expires = DateTime.Now.AddYears(1); // good for one year

我很感激我可以更改上面的代码以选择性地设置 expires

if (isPersistent)
cookie.Expires = DateTime.Now.AddYears(1); // good for one year

已在 GitHub 上创建了一个示例应用程序。 https://github.com/chrismoutray/AuthSample这基本上表明,即使将 isPersistent 标志设置为 true,跨浏览器授权也不起作用。

最佳答案

在框架 1.0/1.1 中,将 IsPersistent 设置为 true 会将 cookie 的有效期设置为 50 年。
在 2.0 版中,它已更改,因此 cookie 的到期时间与表单例份验证超时属性相匹配。因此,您可以将 IsPersistent 设置为 true,但 cookie 将始终在表单例份验证超时时间后过期。
如果您希望在不修改表单例份验证超时的情况下延长有效期,您的代码就可以解决问题。

编辑:我已经下载了您的示例并将您的 cookie 代码替换为

 FormsAuthentication.SetAuthCookie(model.UserName, true);

它按预期工作:将两天配置为您的表单超时,我的 cookie 将在两天后过期。

关于c# - FormsAuthenticationTicket isPersistent 属性的用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10345817/

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