Поиск текущего пользователя, аутентифицированного с помощью базовой аутентификации (Apache)

Поиск текущего пользователя, аутентифицированного с помощью базовой аутентификации (Apache)

Когда вы входите в систему через страницу базовой аутентификации, хранится ли где-либо имя пользователя, с которым вы прошли аутентификацию (на сервере или клиентской машине), может быть, в переменной среды?

Фон: У меня есть общая страница веб-администрирования для сервера электронной почты, и я хотел бы знать, кто что делает. Когда пользователь успешно входит в систему через базовую аутентификацию, я хочу каким-то образом иметь возможность идентифицировать его и регистрировать его действия. Поэтому каждый раз, когда отправляется запрос, я могу записывать в файл журнала. Базовый формат будет следующим:

$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 должны работать.

Связанный контент