.png)
Cuando inicia sesión a través de una página de autenticación básica, ¿el nombre de usuario que autenticó se almacena en algún lugar (en el servidor o en la máquina cliente), tal vez en una variable de entorno?
Fondo: Tengo una página de administración web común para un servidor de correo electrónico y me gustaría saber quién está haciendo qué. Cuando un usuario inicia sesión exitosamente mediante autenticación básica, de alguna manera quiero poder identificarlo y registrar sus acciones. Entonces, cada vez que se envía una solicitud, puedo escribir en un archivo de registro. El formato básico sería:
$username ran a $function against $useraccount
entonces, si un usuario cambió los permisos de alguien, por ejemplo:
Admin-Bob ran a permission change against User-Scott
Entonces, si se producen errores, puedo rastrear fácilmente en el archivo de registro qué acciones conducen a la causa. Intenté comprobar el %ENV
hash sin éxito, ¿alguna idea?
Realmente no quiero entrar en sesiones similares a PHP, porque eso significaría eliminar mi autenticación básica, que ya me da un buen grado de control. Si tengo que codificar algo con sesiones, necesitaría implementar un sistema para bloquear a los usuarios después del máximo de intentos, etc., algo que realmente no quiero codificar. Creo que esto está mejor orientado hacia la falla del servidor porque pertenece más a Apache que al lenguaje de programación. Las sesiones se pueden realizar en multitud de idiomas.
Respuesta1
El nombre de usuario estará disponible en la variable de entorno REMOTE_USER
.
Esto funciona para casi todos los métodos de autenticación, en caso de que alguna vez comience a utilizar la autenticación implícita o incluso la autenticación Kerberos.
Respuesta2
Shtééf ya lo mencionó $ENV{'REMOTE_USER'}
, pero si está usando CGI.pm, la remote_user()
función también lo devuelve.
my $cgi = CGI->new();
print $cgi->remote_user(); # Prints user name
Respuesta3
En realidad, es una variable del servidor, no del entorno.
PHP_AUTH_USER y AUTH_USER deberían funcionar.