Назад | Перейти на главную страницу

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

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

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

$username ran a $function against $useraccount

поэтому, если пользователь изменил чьи-то разрешения, например:

Admin-Bob ran a permission change against User-Scott

Поэтому, если возникают ошибки, я могу легко отследить в файле журнала, какие действия привели к их причине. Я пробовал проверить %ENV хэш безрезультатно, какие-нибудь идеи?

Я действительно не хочу входить в сеансы, подобные PHP, потому что это означало бы отказ от моей базовой аутентификации, что уже дает мне хорошую степень контроля. Если мне нужно что-то кодировать с помощью сеансов, мне нужно реализовать систему для блокировки пользователей после максимального количества попыток и так далее, что я действительно не хочу кодировать. Я думаю, что это лучше ориентировано на сбой сервера, потому что это больше относится к Apache, чем к языку программирования. Сеансы можно проводить на множестве языков.

Имя пользователя будет доступно в переменной окружения REMOTE_USER.

Это работает почти для всех методов аутентификации, если вы когда-нибудь начнете использовать дайджест или, может быть, даже аутентификацию Kerberos.

Уже упоминалось Штеф $ENV{'REMOTE_USER'}, но если вы используете CGI.pm, он также возвращается remote_user() функция.

my $cgi = CGI->new();
print $cgi->remote_user(); # Prints user name

На самом деле это переменная сервера, а не среда.

PHP_AUTH_USER и AUTH_USER должны работать.