Estoy tratando de entender el propósito de la propiedad isPersistent
que se encuentra en la clase FormsAuthenticationTicket
. http://msdn.microsoft.com/en-us/library/kybcs83h.aspx¿Cuál es el propósito de FormsAuthenticationTicket isPersistent property?
- ¿Hay situaciones en las que configurar isPersistent funciona?
- ¿En qué escenarios me gustaría establecer
isPersistent
en verdadero y falso?
La propiedad parece ser redundante ya que he encontrado la única manera para que persista mi cookie de autenticación de usuarios a través de las sesiones del explorador es establecer la propiedad Expires
de la cookie creados como consecuencia de la creación de tickets; incluso si los tickets es el valor persistente se establece en false
.
También encontré que configurar el vencimiento de los tickets (no la cookie) a algo así como 10 segundos con isPersistent
establecido en true tiene poco efecto; el boleto expira después de 10 segundos.
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
I apreciarán que puedo cambiar de código de seguridad para configurar opcionalmente expires
if (isPersistent)
cookie.Expires = DateTime.Now.AddYears(1); // good for one year
Un ejemplo de aplicación se ha creado @ GitHub. https://github.com/chrismoutray/AuthSample Esto básicamente muestra que incluso al establecer el indicador isPersistent en verdadero, la autorización de cross browser no funciona.
Siento que me falta algo, la cookie no persistirá a menos que establezca específicamente el campo 'Expires' de las cookies. Establecer IsPersistent no tiene ningún efecto. –
Si establece IsPersistent en verdadero, la cookie generada tendrá una fecha de caducidad de now + forms timeout. No es tu caso? – lnu
Bueno, no, si elimino la línea 'cookie.Expires = DateTime.Now.AddYears (1);' la función de recordarme del inicio de sesión no funciona aunque isPersistent se establezca en verdadero. –