php - ¿Cómo desconectarse cuando se utiliza la autenticación.htaccess(y.htpasswd)?
authentication logout (4)
Es posible desconectarse. Debe implementar la página de cierre de sesión, que devolverá el HTTP 401, hasta que el usuario ingrese la información de inicio de sesión BAD y luego lo redireccione a otro lugar. El navegador recuerda la última información de inicio de sesión aceptada y, por lo tanto, anula el inicio de sesión correcto.
Pero esto es inutilizable, porque necesita la cooperación del usuario.
Posible duplicado:
Cierre de autenticación HTTP a través de PHP
Hola
Tengo algunas funciones en mi sitio web protegidas usando .htaccess
y .htpasswd
. Cuando los usuarios intentan acceder a esto, reciben un aviso para ingresar detalles. Ingresan sus detalles y entran y pueden ver cosas, etc. Todo funciona bien.
Mi pregunta es cómo puedo crear una funcionalidad de logout
para este tipo de autenticación. Sé que pueden cerrar la ventana del navegador para "Cerrar sesión". Pero esto no es ideal. ¿Qué me recomendarías?
Gracias.
Los navegadores generalmente no son compatibles con esto, consulte ¿Cómo cierro sesión?
Desde que los navegadores comenzaron a implementar la autenticación básica, los administradores de sitios web han querido saber cómo dejar que el usuario cierre la sesión. Dado que el navegador guarda en caché el nombre de usuario y la contraseña con el dominio de autenticación, como se describió anteriormente en este tutorial, esto no depende de la configuración del servidor, sino de que el navegador olvide la información de credenciales, de modo que la próxima vez se solicita un recurso, el nombre de usuario y la contraseña deben ser entregados nuevamente. Existen numerosas situaciones en las que esto es deseable, como cuando se usa un navegador en un lugar público, y no se desea dejar el navegador conectado, para que la siguiente persona pueda acceder a su cuenta bancaria.
Sin embargo, aunque esta es quizás la pregunta más frecuente sobre la autenticación básica, hasta ahora ninguno de los principales fabricantes de navegadores ha visto esto como una característica deseable para poner en sus productos.
En consecuencia, la respuesta a esta pregunta es: no puedes. Lo siento.
Existen extensiones de navegador que le permiten borrar la autenticación HTTP para un sitio. Para Firefox, la extensión WebDeveloper (que es una de mis extensiones preferidas de todos modos) ofrece esta característica. El menú para esto es Miscellaneous/Clear Private Data/HTTP Authentication
.
Me encontré con este problema hace varios años. Es increíblemente frustrante descubrir que hay un problema que todos tienen y nadie parece querer resolverlo de manera general.
Como se señala en la función Inadequate Logout en Autenticación HTTP , creo que la respuesta es cambiar el RFC para permitir tiempos de espera y admitir un botón de cerrar sesión. La sugerencia adicional del autor de que el servidor pueda enviar un encabezado "desconectarse" en realidad eliminaría la necesidad de cualquier soporte de agente de usuario cliente ya que los sitios web podrían simplemente incluir un enlace en una página web a una URL que devuelva el código de respuesta necesario y / o encabezado para invalidar la sesión actual.
Probado en Firefox y Chrome . Lo que puede hacer es enviar al usuario a http: // logout: [email protected] . Esto reemplazará su nombre de usuario / contraseña actual con logout / logout (podría ser cualquier combinación de usuario / pase inválida) y dado que ahora tienen el nombre de usuario / contraseña incorrectos, tendrán que iniciar sesión de nuevo para acceder al sitio.
En ópera esto no funciona, porque puede tener varios nombres de usuario / contraseñas al mismo tiempo. Tampoco funcionó en IE porque IE no parece ser compatible con las URL http: // username: [email protected] .