2009-03-12 9 views
6

Tengo un enlace de inicio de sesión que dispara una función de JavaScript que llama a una página de cierre de sesión. Esto es lo que la página de cierre de sesión se compone de:¿Por qué mi cookie no se borra/desarma?

If Response.Cookies.Count > 0 Then 
    Response.Cookies("aLog").Value = Nothing 
    Response.Cookies.Clear() 
End If 

originalmente sólo tenía cookies.clear allí, pero que no estaba funcionando.

Aquí está el código JavaScript que envía la solicitud a la página de cierre de sesión:

<script type="text/javascript"> 
    //<![CDATA[ 
    $(document).ready(function() { 
     $('#logout-link').click(function() { 
      if (confirm("Really log out?")) { 
       $.cookie('aLog', null); 
       location.href = $(this).attr('href'); 
      } 
      return false; 
     }); 
    }); 
    //]]> 
</script> 

La función jQuery $.cookie tampoco funciona. La cookie fue establecida por ASP.NET, así que pensé que podría desarmarla con ASP.NET también, pero aparentemente no. ¿Alguna idea/sugerencia?

Respuesta

10

Trabajar con cookies en ASP.NET puede ser un poco poco intuitivo. Para matar una cookie que ya se encuentra en el lado del cliente, debe establecer su fecha de caducidad en algún momento del pasado y volver a enviar al cliente la nueva cookie. El navegador del cliente se actualizará la cookie existente con la nueva fecha de vencimiento, y luego matar inmediatamente, puesto que ya ha pasado la fecha de caducidad:

HttpCookie cookie = Request.Cookies["aLog"]; 
cookie.Expires = DateTime.Now.AddYears(-10); 
Response.AppendCookie(cookie); 
+1

Ok, entonces llego a mi página de cierre de sesión, dice que no hay cookies establecidas (request.cookies.count = 0), pero cuando se redirige a la página de inicio de sesión, ¿vuelve a aparecer la cookie? que molesto. – Anders

+0

re: 'AppendCookie':" Esta API admite la infraestructura de .NET Framework y no está destinada a ser utilizada directamente desde su código ". [Ref] (http://msdn.microsoft.com/en-us/library/system.web.httpresponse.appendcookie.aspx) – HABO

4

Además de lo que dijo Rex, siempre debe estar fijándose el 'camino 'de cualquier cookie que use (generalmente para algo como "/"). De lo contrario, la visibilidad de la cookie depende del nombre de la carpeta en la URL, por lo que si tiene algo más que una configuración de esquema URL plano y eliminar las cookies funcionará de manera muy impredecible.

+0

Buen consejo. Mi problema ocurrió al configurar la cookie con jQuery y luego eliminarla en una página ASP en otra ruta. – CleanUp

Cuestiones relacionadas