我正试图弄清楚课堂isPersistent
上发现的财产的目的FormsAuthenticationTicket
。http://msdn.microsoft.com/en-us/library/kybcs83h.aspx
- 设置 isPersistent 工作时是否有场景?
- 在什么情况下我想设置
isPersistent
为真和假?
该属性似乎是多余的,因为我发现在浏览器会话中保留我的用户身份验证 cookie 的唯一方法是设置Expires
票证创建后创建的 cookie 的属性;即使票证的 isPersistent 值设置为false
.
我还发现将票证到期时间(不是 cookie)设置为 10 秒并isPersistent
设置为 true 几乎没有效果;票证将在 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,跨浏览器授权也不起作用。