.png)
Quando você faz login por meio de uma página de autenticação básica, o nome de usuário que você autenticou está armazenado em algum lugar (no servidor ou na máquina cliente), talvez em uma variável de ambiente?
Fundo: Tenho uma página de administração web comum para um servidor de e-mail e gostaria de saber quem está fazendo o quê. Quando um usuário faz login com sucesso por meio de autenticação básica, de alguma forma quero ser capaz de identificá-lo e registrar suas ações. Assim, cada vez que uma solicitação é enviada, posso gravar em um arquivo de log. O formato básico seria:
$username ran a $function against $useraccount
então, se um usuário alterou as permissões de alguém, por exemplo:
Admin-Bob ran a permission change against User-Scott
Portanto, se ocorrerem erros, posso rastrear facilmente no arquivo de log quais ações levaram à causa. Tentei verificar o %ENV
hash sem sucesso, alguma ideia?
Eu realmente não quero entrar em sessões do tipo PHP, porque isso significaria descartar minha autenticação básica, o que já me dá um bom grau de controle. Se eu tiver que codificar algo com sessões, precisarei implementar um sistema para bloquear usuários após o máximo de tentativas e assim por diante, o que realmente não quero codificar. Eu acho que isso é mais adequado para serverfault porque se refere mais ao Apache do que à linguagem de programação. As sessões podem ser realizadas em vários idiomas.
Responder1
O nome de usuário estará disponível na variável de ambiente REMOTE_USER
.
Isso funciona para quase todos os métodos de autenticação, caso você comece a usar o resumo ou talvez até mesmo a autenticação Kerberos.
Responder2
Shtééf já mencionou $ENV{'REMOTE_USER'}
, mas se você estiver usando CGI.pm, também será retornado pela remote_user()
função.
my $cgi = CGI->new();
print $cgi->remote_user(); # Prints user name
Responder3
Na verdade, é uma variável de servidor, não de ambiente.
PHP_AUTH_USER e AUTH_USER devem funcionar.