Sto cercando di capire come funziona la proprietà isPersistent
trovata nella classe FormsAuthenticationTicket
. http://msdn.microsoft.com/en-us/library/kybcs83h.aspxQual è lo scopo della proprietà FormsAuthenticationTicket isPersistent?
- Esistono scenari durante l'impostazione di isPersistent?
- In quali scenari si desidera impostare
isPersistent
su true e false?
La proprietà sembra essere ridondante da quando ho trovato l'unico modo per me a persistere il cookie di autenticazione utenti attraverso sessioni del browser è quello di impostare la proprietà Expires
del cookie creati dopo la creazione di biglietti; anche se il ticket è il valore persistente è impostato su false
.
Inoltre, ho riscontrato che l'impostazione di scadenza dei ticket (non del cookie) su qualcosa come 10 secondi con isPersistent
impostata su true ha scarso effetto; il biglietto scade dopo 10 secondi.
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
mi rendo conto che posso cambiare il mio codice qui sopra per impostare facoltativamente expires
if (isPersistent)
cookie.Expires = DateTime.Now.AddYears(1); // good for one year
Un esempio di applicazione è stata creata @ GitHub. https://github.com/chrismoutray/AuthSample Ciò dimostra che anche impostando il flag isPersistent su true l'autorizzazione cross-browser non funziona.
Mi sento come se mi mancasse qualcosa, il cookie non persisterà a meno che non imposti specificamente il campo "Scadenti". L'impostazione IsPersistent non ha alcun effetto. –
Se si imposta IsPersistent su true, il cookie generato avrà una data di scadenza ora + timeout moduli. Non è il tuo caso? – lnu
Bene no - se rimuovo la riga 'cookie.Expires = DateTime.Now.AddYears (1);' la mia funzione remember-me del login non funziona anche se isPersistent è impostato su true. –