Próbuję uzyskać głowę wokół celu isPersistent
Właściwość znaleziona w klasie FormsAuthenticationTicket
. http://msdn.microsoft.com/en-us/library/kybcs83h.aspxJaki jest cel właściwości FormsAuthenticationTicket jest właściwośćPersistent?
- Czy istnieją scenariusze podczas ustawiania trwałych prac?
- W jakich sytuacjach chciałbym ustawić
isPersistent
na true i false?
Obiekt wydaje się być zbędne, ponieważ znalazłem jedyny sposób dla mnie utrzymywać mój plik cookie uwierzytelniania użytkowników w całej sesji przeglądarki jest ustawić właściwość cookie utworzone w wyniku tworzenia biletów Expires
; nawet jeśli wartość biletów jest wyższa niż false
.
Zauważyłem również, że ustawienie daty wygaśnięcia biletu (nie ciasteczka) na coś podobnego do 10 sekund z isPersistent
ustawionym na true ma niewielki wpływ; bilet wygasa po 10 sekundach.
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
Rozumiem, że mogę zmienić mój powyższy kod do opcjonalnie ustawić expires
if (isPersistent)
cookie.Expires = DateTime.Now.AddYears(1); // good for one year
Przykładem wniosek został stworzony @ GitHub. https://github.com/chrismoutray/AuthSample Zasadniczo pokazuje to, że nawet ustawiając flagę isPersistent na wartość true autoryzacja dla przeglądarki krzyżowej nie działa.
Czuję, że czegoś mi brakuje, ciasteczko nie przetrwa, chyba że specjalnie ustawię pole "Ważność" plików cookie. Ustawienie IsPersistent nie daje żadnego efektu. –
Jeśli ustawisz wartość IsPersistent na true, wygenerowany plik cookie będzie miał datę wygaśnięcia + teraz limit czasu. To nie twoja sprawa? – lnu
No no - jeśli usunę linię 'cookie.Expires = DateTime.Now.AddYears (1);' moja funkcja logowania mnie nie działa, nawet jeśli isPersistent jest ustawione na true. –