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 a autenticação digest ou talvez mesmo kerberos.
Quando você faz login através de uma página de autenticação básica, o nome de usuário que você autenticou está armazenado em qualquer lugar (no servidor ou na máquina cliente), talvez em uma variável de ambiente?
Plano de fundo : tenho uma página de administração da Web comum para um servidor de e-mail e gostaria de saber quem está fazendo o quê. Quando um usuário efetua login com êxito por meio da autenticação básica, eu de alguma forma quero poder identificá-los e registrar suas ações. Portanto, toda 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 levam à causa. Eu tentei verificar o hash %ENV
sem sucesso, alguma idéia?
Eu realmente não quero entrar em sessões semelhantes a PHP, porque isso significaria eliminar minha autenticação básica, o que me dá um bom grau de controle já. Se eu tiver que codificar algo com sessões, precisaria implementar um sistema para bloquear usuários após tentativas máximas e assim por diante, o que eu realmente não quero codificar. Eu acho que isso é melhor voltado para serverfault porque pertence ao Apache mais do que a linguagem de programação. As sessões podem ser feitas em vários idiomas.
Shtééf já mencionou $ENV{'REMOTE_USER'}
, mas se você estiver usando CGI.pm, ele também será retornado pela função remote_user()
.
my $cgi = CGI->new();
print $cgi->remote_user(); # Prints user name
Na verdade, é uma variável de servidor, não de ambiente.
PHP_AUTH_USER e AUTH_USER devem funcionar.
Tags perl cgi linux apache-2.2