none
FormsAuthenticationTicket ticket duda con la imprlementación RRS feed

  • Pregunta

  • Hola buenas, tengo una web (WebForms ASP.NET 4.5.2), donde quiero que un usuario cuando se loguea se cree una sesión de 60 minutos y que si marca la casilla de recordar se cree un ticket válido de 7 días.

    En el web config tengo el sessioState timeout=60 y en la sección authentication mode="Forms" tengo timeout="10080"

                AuthenticationSection authSection = (AuthenticationSection)ConfigurationManager.GetSection("system.web/authentication");
                FormsAuthenticationConfiguration formsAuthenticationSection = authSection.Forms;
                DateTime now = DateTime.Now;
    
                // see http://msdn.microsoft.com/en-us/library/kybcs83h.aspx
                // Create a new ticket used for authentication
                FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
                    2,                                          // Ticket version
                    userName,                                   // Username to be associated with this ticket
                    now,                                        // Date/time issued
                    now.Add(formsAuthenticationSection.Timeout),// Date/time to expire
                    createPersistentCookie,
                    userData,
                    FormsAuthentication.FormsCookiePath);
    
                // Hash the cookie for transport over the wire
                string hash = FormsAuthentication.Encrypt(ticket);
                HttpCookie cookie = new HttpCookie(
                    FormsAuthentication.FormsCookieName,    // Name of auth cookie (specified in web.config)
                    hash);                                  // Hashed ticket
    
                // Add the cookie to the list for outbound response
                HttpContext.Current.Response.Cookies.Add(cookie);   

    Mis preguntas son:

    1. ¿Está correcta esta manera de hacerlo o a la variable HttpCookie debo asignarle una fecha de expiración?:

    cookie.Expires = now.Add(formsAuthenticationSection.Timeout);

    2. ¿ASP.NET WebForms se encarga de gestionar el ticket o debo ser yo?, me refiero a que si el usuario cierra el navegador y lo vuelve a abrir, ¿debo comprobar si existe la sesión o el ticket y si este es persistente?, y cuando la sesión expira quien debe comprobar si hay ticket....

    Gracias

    jueves, 26 de mayo de 2016 10:26