查找通过基本身份验证(Apache)验证的当前用户

查找通过基本身份验证(Apache)验证的当前用户

当您通过基本身份验证页面登录时,您验证的用户名是否存储在任何地方(在服务器或客户端计算机上),也许在环境变量中?

背景:我有一个用于电子邮件服务器的通用 Web 管理页面,我想知道谁在做什么。当用户通过基本身份验证成功登录时,我希望能够识别他们并记录他们的操作。因此,每次提交请求时,我都可以写入日志文件。基本格式为:

$username ran a $function against $useraccount

因此如果用户改变了某人的权限,例如:

Admin-Bob ran a permission change against User-Scott

因此,如果发生错误,我可以轻松地在日志文件中追溯导致错误的原因。我尝试检查哈希,%ENV但没有结果,有什么想法吗?

我不太想使用类似 PHP 的会话,因为那意味着放弃我的基本身份验证,而这已经给了我很好的控制权。如果我必须用会话编写代码,我需要实现一个系统来在最大尝试次数后阻止用户等等,而我并不想编写这样的代码。我认为这更适合 serverfault,因为它与 Apache 的关系比与编程语言的关系更密切。会话可以用多种语言来实现。

答案1

用户名将在环境变量中可用REMOTE_USER

如果您开始使用摘要式身份验证或甚至 Kerberos 身份验证,这几乎适用于所有身份验证方法。

答案2

Shtééf 已经提到$ENV{'REMOTE_USER'},但如果您使用 CGI.pm,它也由函数返回remote_user()

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

答案3

它实际上是一个服务器变量,而不是环境。

PHP_AUTH_USER 和 AUTH_USER 都应该可以工作。

相关内容