首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FormsAuthenticationTicket isPersistent属性的用途是什么?

FormsAuthenticationTicket isPersistent属性的用途是什么?
EN

Stack Overflow用户
提问于 2012-04-27 14:30:49
回答 1查看 19K关注 0票数 20

我试图弄清楚在FormsAuthenticationTicket类上找到的isPersistent属性的用途。http://msdn.microsoft.com/en-us/library/kybcs83h.aspx

  1. 设置isPersistent works时是否有以下情况?
  2. 在哪些情况下,我希望将isPersistent设置为true和false?

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

我还发现,在isPersistent设置为true的情况下,将票证过期时间(而不是cookie)设置为类似10秒的值效果不大;票证在10秒后过期。

代码语言:javascript
复制
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

代码语言:javascript
复制
if (isPersistent)
    cookie.Expires = DateTime.Now.AddYears(1); // good for one year

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-27 15:57:18

在Framework1.0/1.1中,将IsPersistent设置为true将设置cookie的过期时间为50年。

在2.0版中,对其进行了更改,使cookie的过期时间与表单身份验证超时属性相匹配。因此,您可以将IsPersistent设置为true,但cookie将始终在表单身份验证超时后过期。

如果您希望在不修改窗体身份验证超时的情况下获得较长的过期时间,则您的代码可以解决此问题。

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

代码语言:javascript
复制
 FormsAuthentication.SetAuthCookie(model.UserName, true);

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

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10345817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档