Was ist der Zweck der Eigenschaft isPersistent von FormsAuthenticationTicket?
Ich versuche meinen Kopf um den Zweck derisPersistent
Eigentum gefunden auf demFormsAuthenticationTicket
Klasse.http://msdn.microsoft.com/en-us/library/kybcs83h.aspx
isPersistent
zu wahr und falsch?Die Eigenschaft scheint überflüssig zu sein, da ich die einzige Möglichkeit gefunden habe, das Authentifizierungscookie meines Benutzers über Browsersitzungen hinweg beizubehalten, ist das Festlegen derExpires
Eigentum des Cookies, das nach der Erstellung des Tickets erstellt wurde; Auch wenn der Wert für tickets isPersistent auf festgelegt istfalse
.
Ich habe auch festgestellt, dass das Setzen des Ticketablaufs (nicht des Cookies) auf etwa 10 Sekunden mitisPersistent
auf true gesetzt hat wenig Wirkung; Das Ticket verfällt nach 10 Sekunden.
<code>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 </code>
Ich weiß zu schätzen, dass ich meinen obigen Code in einen optionalen Code ändern kannexpires
<code>if (isPersistent) cookie.Expires = DateTime.Now.AddYears(1); // good for one year </code>
Eine Beispielanwendung wurde bei GitHub erstellt.https://github.com/chrismoutray/AuthSample Dies zeigt im Grunde, dass die browserübergreifende Autorisierung nicht funktioniert, selbst wenn das Flag isPersistent auf true gesetzt wird.