¿Cómo cerrar sesión como usuario en un sitio web mediante autenticación BÁSICA?

Resuelto Marko asked hace 16 años • 26 respuestas

¿Es posible cerrar sesión como usuario en un sitio web si utiliza autenticación básica?

Eliminar la sesión no es suficiente, ya que, una vez que el usuario se autentica, cada solicitud contiene información de inicio de sesión, por lo que el usuario inicia sesión automáticamente la próxima vez que acceda al sitio con las mismas credenciales.

La única solución hasta ahora es cerrar el navegador, pero eso no es aceptable desde el punto de vista de la usabilidad.

Marko avatar Oct 24 '08 20:10 Marko
Aceptado

Haga que el usuario haga clic en un enlace a https://log: [email protected] /. Eso sobrescribirá las credenciales existentes con otras no válidas; cerrar sesión.

Esto lo hace enviando nuevas credenciales en la URL. En este caso usuario="log" contraseña="out".

Matthew Welborn avatar Oct 08 '2013 21:10 Matthew Welborn

Una adición a la respuesta de bobince...

Con Ajax puede tener su enlace/botón 'Cerrar sesión' conectado a una función de Javascript. Haga que esta función envíe XMLHttpRequest con un nombre de usuario y contraseña incorrectos. Esto debería devolver un 401. Luego, configure document.location nuevamente a la página de inicio de sesión previo. De esta manera, el usuario nunca verá el cuadro de diálogo de inicio de sesión adicional durante el cierre de sesión, ni tendrá que recordar ingresar credenciales incorrectas.

system PAUSE avatar Jan 29 '2009 18:01 system PAUSE

La autenticación básica no fue diseñada para administrar el cierre de sesión. Puedes hacerlo, pero no de forma completamente automática.

Lo que debe hacer es hacer que el usuario haga clic en un enlace para cerrar sesión y envíe un '401 no autorizado' en respuesta, utilizando el mismo dominio y en el mismo nivel de carpeta URL que el 401 normal que envía solicitando un inicio de sesión.

Se les debe indicar que ingresen credenciales incorrectas a continuación, por ejemplo. un nombre de usuario y contraseña en blanco y, en respuesta, envía una página que dice "Has cerrado sesión correctamente". Las credenciales incorrectas/en blanco sobrescribirán las credenciales correctas anteriores.

En resumen, el script de cierre de sesión invierte la lógica del script de inicio de sesión y solo devuelve la página de éxito si el usuario no pasa las credenciales correctas.

La pregunta es si el cuadro de contraseña un tanto curioso “no ingrese su contraseña” logrará la aceptación del usuario. Los administradores de contraseñas que intentan completar automáticamente la contraseña también pueden interferir aquí.

Editar para agregar en respuesta al comentario: volver a iniciar sesión es un problema ligeramente diferente (a menos que, obviamente, requiera cerrar sesión/iniciar sesión en dos pasos). Debe rechazar (401) el primer intento de acceder al enlace de inicio de sesión y luego aceptar el segundo (que presumiblemente tiene un nombre de usuario/contraseña diferente). Hay algunas formas de hacer esto. Una sería incluir el nombre de usuario actual en el enlace de cierre de sesión (por ejemplo, /relogin?nombredeusuario) y rechazarlo cuando las credenciales coincidan con el nombre de usuario.

bobince avatar Oct 24 '2008 13:10 bobince