Foros del Web » Programando para Internet » ASPX (.net) »

Forms Authentication y expiracion de la cookie

Estas en el tema de Forms Authentication y expiracion de la cookie en el foro de ASPX (.net) en Foros del Web. Hola, El problema que tengo es el mismo que algunos, por lo que he podido ver por la red, y las respuestas no son muy ...
  #1 (permalink)  
Antiguo 22/11/2006, 04:05
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
Forms Authentication y expiracion de la cookie

Hola,
El problema que tengo es el mismo que algunos, por lo que he podido ver por la red, y las respuestas no son muy claras.
Después de que todo el mundo dé las explicaciones sobre el funcionamiento del método FormasAuthentication.RedirectFromLoginPage(Nombre, true) te encuentras en que la cookie, realmente no está siendo persistente, por algun motivo que ya cuesta más de encontrar por la red.
Durante el tiempo de sesion la autenticacion "aguanta", pero al acceder al sitio al cabo de una hora, ya no te reconoce el usuario como autenticado.
En muchos menos artículos me encuentro alguna cosa que puede iluminarme, pero en ingles, y no acabo de entender bien el problema. Pero ejemplo aqui: http://geekswithblogs.net/vivek/arch.../13/93956.aspx
Yo uso este código actualmente.

web.config
Código:
<authentication mode="Forms">
    <forms name="miSitioSecurityCookie" loginUrl="Login.aspx" protection="All" path="/">
    </forms>
</authentication>
Y luego, tengo una página de la que heredan todas las demás, y en su Page_Load tengo esto:
Código:
If "" & Session("NuevaVisita") = "" Then
    Session("NuevaVisita") = 1
    If User.Identity.IsAuthenticated Then
        Dim objUsuarios As New Karma.TI_ClientesDB
        Dim misDetalles As Karma.TI_DetallesCliente = objUsuarios.DameDetallesCliente(User.Identity.Name)
        Session("DetallesUsuario") = misDetalles
        FormsAuthentication.SetAuthCookie(User.Identity.Name, True)
    End If
End If
Por ahí puedo ver que el valor por defecto para la propiedad TimeOut del web.config, en el apartado "<forms..." es de 30 minutos. Es que hay un valor para pasarle a esta propiedad, de forma que le indique un tiempo indefinido, y así conseguir que la cookie sea persistente realmente?
Y si no, alguien puede ver el fallo?
Muchas gracias.
Un saludo!
__________________
..:: moNTeZIon ::..
  #2 (permalink)  
Antiguo 04/12/2006, 06:16
Avatar de javiermil  
Fecha de Ingreso: agosto-2004
Mensajes: 509
Antigüedad: 19 años, 8 meses
Puntos: 2
Hola, el artículo al que haces referencia lo que te dice es que tienes que crear un expiración de FormsAuthenticationTicket para hacer una cookie persistente, ese tiempo de expiración debe ser igual al tiempo de expiración de la cookie.

FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(Username, true, 1439200); //el mismo tiempo que el de la cookie

string encryptedTicket = FormsAuthentication.Encrypt(authTicket);

HttpCookie authCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);

authCookie.Expires = DateTime.Now.AddMonths(3);//mismo tiempo que el de la cookie.

No hay una forma de poner que la cookie sea persistente con una propiedad, lo que si puedes hacer es ponerle un tiempo distinto al que viene en el web.config y es de ésta manera, tal y como viene en el artículo. Saludos
  #3 (permalink)  
Antiguo 04/12/2006, 11:28
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
Gracias javiermil,
Ya ves que no uso eso de los "tickets", no se si será un problema.
Utilizo el código que viste arriba.
De todas formas, conseguí resolver el problema estableciendo la propiedad TimeOut a un numero específico de segundos, que son los que se mantiene esa cookie en el cliente.
Ahora ya funciona como yo esperaba.
Debo tener en cuenta algo que no tenga? Me refiero al uso del llamado "authTicket". A mi la cosa me funciona con el codigo de arriba.
Hay algún motivo por el que debería utilizar los tickets?
Gracias por las opiniones.
Saludos.
__________________
..:: moNTeZIon ::..
  #4 (permalink)  
Antiguo 05/12/2006, 08:31
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Cita:
Iniciado por moNTeZIon
Hay algún motivo por el que debería utilizar los tickets?
para hacer la cookie más segura, personalizarla en una sola referencia (timer, persistencia, encripacion..etc..)..etc..

Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #5 (permalink)  
Antiguo 05/12/2006, 09:47
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
Ok, gracias Root.
No parece que represente grandes cambios. Voy a intentar de optimizar el codigo usando los tickets, a ver qué tal.
Salu2.
__________________
..:: moNTeZIon ::..
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:30.