.png)
Когда вы входите в систему через страницу базовой аутентификации, хранится ли где-либо имя пользователя, с которым вы прошли аутентификацию (на сервере или клиентской машине), может быть, в переменной среды?
Фон: У меня есть общая страница веб-администрирования для сервера электронной почты, и я хотел бы знать, кто что делает. Когда пользователь успешно входит в систему через базовую аутентификацию, я хочу каким-то образом иметь возможность идентифицировать его и регистрировать его действия. Поэтому каждый раз, когда отправляется запрос, я могу записывать в файл журнала. Базовый формат будет следующим:
$username ran a $function against $useraccount
поэтому, если пользователь изменил чьи-то разрешения, например:
Admin-Bob ran a permission change against User-Scott
Так что если возникнут ошибки, я могу легко отследить в файле журнала, какие действия привели к причине. Я пробовал проверять хэш, %ENV
но безрезультатно, есть идеи?
Я не хочу заниматься сессиями, подобными PHP, потому что это означало бы отказ от моей базовой аутентификации, которая и так дает мне хорошую степень контроля. Если мне нужно что-то кодировать с сессиями, мне нужно будет реализовать систему блокировки пользователей после максимального количества попыток и т. д., что я не хочу кодировать. Я думаю, что это лучше подходит для serverfault, потому что это больше относится к Apache, чем к языку программирования. Сеансы могут быть реализованы на множестве языков.
решение1
Имя пользователя будет доступно в переменной среды REMOTE_USER
.
Это работает практически для любого метода аутентификации, если вы когда-нибудь начнете использовать дайджест-аутентификацию или даже аутентификацию Kerberos.
решение2
Штеф уже упоминал $ENV{'REMOTE_USER'}
, но если вы используете CGI.pm, то он также возвращается функцией remote_user()
.
my $cgi = CGI->new();
print $cgi->remote_user(); # Prints user name
решение3
На самом деле это переменная сервера, а не среды.
PHP_AUTH_USER и AUTH_USER должны работать.