Когда вы входите в систему через базовую страницу аутентификации, аутентифицировано ли имя пользователя как хранимое где-нибудь (на сервере или клиентском компьютере), может быть, в переменной среды?
Задний план: У меня есть общая страница веб-администрирования для сервера электронной почты, и я хотел бы знать, кто чем занимается. Когда пользователь успешно входит в систему через базовую аутентификацию, я как-то хочу иметь возможность идентифицировать их и регистрировать их действия. Поэтому каждый раз, когда отправляется запрос, я могу записывать его в файл журнала. Базовый формат будет:
$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 должны работать.