¿Cómo se relaciona el flujo de eventos de HttpApplication con la membresía y las cookies?

Anulé Application_AuthenticateRequest () en mi Global.asax para tratar de comprender mejor el flujo de eventos. Estoy usando el proveedor de membresía que viene con la aplicación MVC2 predeterminada.

Pensé que si hacía esto:

    public void Application_AuthenticateRequest(object sender, EventArgs args)
    {
        HttpCookie authCookie = Request.Cookies[FormsAuthentication.FormsCookieName];
        if (authCookie != null)
        {
            authCookie.Expires = System.DateTime.Now.AddDays(-1);  // Set the cookie expires time in order to delete it
            Response.Cookies.Add(authCookie);
        }
    }

Un usuario podría iniciar sesión, pero al cargar la página después de enviar el formulario de inicio de sesión, aparecería como no iniciado sesión ya que destruí su cookie de autenticación.

Sin embargo, este no es el caso. En su lugar, pueden iniciar sesión con éxito y les mostrará que iniciaron sesión cuando se cargue la página. La siguiente página que accedan los cerrará.

Pensé que no había destruido su cookie a tiempo, así que coloqué ese código en Application_BeginRequest () dentro de mi Global.asax. Produjo los mismos resultados.

¿Significa esto que todavía no destruí su cookie a tiempo, o no estoy comprendiendo correctamente el flujo de eventos?

preguntado el 09 de enero de 11 a las 05:01

2 Respuestas

Aquí se utilizan dos colecciones de cookies; Solicitud.Cookies y Respuesta.Cookies

Solicitar.Las cookies son cookies que provienen del navegador de la página actual. La mayoría / todos los procesos leen de esta colección.

Respuesta.Las cookies son las cookies que se enviarán de vuelta al navegador. Cuando establece el valor de Caducidad en la cookie de respuesta, primero tiene que volver al navegador, el navegador ve que ha caducado y luego no habrá ninguna cookie en la página siguiente.

Puede intentar configurar Request.Cookies, pero creo que es de solo lectura.

Respondido el 09 de enero de 11 a las 12:01

Eso tiene sentido. Aparentemente, pensé que al devolver la respuesta, su cookie se eliminaría, lo que mágicamente afectaría retroactivamente la respuesta que se envía. Har har. Puedo vivir con el 1 fuera de página para cerrar la sesión. Dicho esto, ¿Application_AuthenticateRequest () es una buena ubicación para una lógica como esta? - Esgrafiado

Utilización de FormsAuthentication.SignOut(); es la forma preferida de cerrar la sesión de un usuario autenticado.

Respondido el 09 de enero de 11 a las 10:01

Necesito cerrar la sesión de los usuarios que no son el usuario actual, olvidé mencionar eso. Es para prohibir. - Esgrafiado

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.