Comunidad de diseño web y desarrollo en internet

Logout y sesiones con .htaccess y .htpasswd

Tuve la necesidad de hacer logout sin utilizar sesiones. Esto para hacer una propuesta a un prospecto de cliente, a pesar de que no se requería una programación compleja (esto quiere decir que mi demo solo contiene una imagen y una lista con posición absoluta) sí era necesario tener un login y password. La solución más cómoda para todos era hacer protección con login de .htaccess y .htpasswd.

Pero no tomé en cuenta que así como me logueo también necesito cerrar la sesión (no lo consideré porque sería solo un demo para mostrarle al prospecto de cliente). Averigüé si esto era posible al no estar utilizando sesiones de PHP.

Buscando en el foro encontré algunos comentarios donde mencionaban que no era posible y que si quería cerrar la sesión la mejor manera es a la vieja escuela. Pero sí es posible utilizando los archivos .htaccess y .htpasswd, y como no encontré aquí un post que indique cómo hacerlo, les quiero compartir lo que encontré.

Logout de sesiones HTTP con .htaccess y .htpasswd


En la carpeta raiz de nuestro sitio creamos una carpeta a la cual llamaremos _logout (este nombre es el que ustedes decidan, yo le puse así por ser un nombre descriptivo para nuestro ejemplo).

Dentro de nuestra carpeta _logout crearemos 3 archivos: .htaccess, .htpasswd y logout.html. En ésta carpeta tenemos los bien conocidos .htaccess y .htpasswd, dichos archivos son totalmente diferentes a los ya existentes y que están ubicados en el directorio raíz (parto de esa idea).

Código para el nuevo .htaccess


Código :

AuthUserFile /ruta_interna_de_mi_sitio/_logout/.htpasswd
AuthType Basic
require user logout

Lo que vemos en "require" es lo importante, _logout es nuestra nueva carpeta y .htpasswd es el nuevo archivo .htpasswd que hemos creado, logout es el un nuevo usuario, que para nuestro caso práctico he llamado logout.

Código para el nuevo .htpasswd


Código :

logout:logout_pass

Donde logout es el usuario que se declaramos en el paso anterior y logout_pass es la contraseña que le asignamos a éste nuevo usuario, recordemos que la contraseña va encriptada, en la Web podremos encontrar diversos sitios que nos ayudan a encriptar contraseñas para nuestros archivos .htpasswd.

El contenido para logout.html


Éste archivo lo podemos personalizar a nuestro gusto, puede llevar desde un simple mensaje de despedida, un redireccionamiento a la página principal, instrucciones para cerrar la ventana, etc.

Esto es todo con lo que respecta a la nueva carpeta creada, ahora veamos como cerrar la sesión.

Cerrar la sesión con la carpeta _logout y .htaccess


Supongamos que en la cabecera de nuestro sitio tenemos un texto que nos indica algo así como "salir" o "cerrar sesión", a dicho texto le haremos lo siguiente, fíjense bien como está construida la sintaxis del atributo href.

Código :

<a href = "http://logout:logout_pass@midominio/_logout/logout.html">
Salir
</a>

logout es el usuario, logout_pass es la contraseña que indicamos para ese usuario y lo que va seguido de la @ ya sabemos a lo que hace referencia.

De esta manera es como podemos hacer un logout utiilzando los archivos .htaccess y htpasswd sin necesidad de usar sesiones de PHP, es una manera sencilla pues por la urgencia del asunto no pude investigar si hay una manera más completa de hacerlo, aunque estoy casi seguro de que sí.

Espero que este pequeño aporte les pueda servir, si existe alguna duda que yo no pueda ayudarles a resolver creo que entre todos nos podemos apoyar para solucionarla.

¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.

Publica tu comentario

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate