Linux

查找通過基本認證(Apache)認證的目前使用者

  • June 18, 2010

當您通過基本身份驗證頁面登錄時,您通過身份驗證的使用者名是否儲存在任何地方(在伺服器或客戶端電腦上),可能在環境變數中?

背景:我有一個用於電子郵件伺服器的通用 Web 管理頁面,我想知道誰在做什麼。當使用者通過基本身份驗證成功登錄時,我希望能夠辨識他們並記錄他們的操作。所以每次送出請求時,我都可以寫入日誌文件。基本格式是:

$username ran a $function against $useraccount

因此,如果使用者更改了某人的權限,例如:

Admin-Bob ran a permission change against User-Scott

因此,如果發生錯誤,我可以輕鬆地在日誌文件中追溯導致原因的操作。我嘗試檢查%ENV雜湊無濟於事,有什麼想法嗎?

我真的不想進入類似 PHP 的會話,因為那將意味著取消我的基本身份驗證,這已經給了我很好的控製程度。如果我必須用會話編寫一些程式碼,我需要實現一個系統來在最大嘗試次數後阻止使用者等等,我真的不想編寫程式碼。我認為這更適合伺服器故障,因為它與 Apache 相關,而不是程式語言。會議可以用多種語言進行。

使用者名將在環境變數中可用REMOTE_USER

如果您開始使用摘要或什至可能是 kerberos 身份驗證,這幾乎適用於所有身份驗證方法。

Shtéf 已經提到過$ENV{'REMOTE_USER'},但如果您使用的是 CGI.pm,它也會由remote_user()函式返回。

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

引用自:https://serverfault.com/questions/152510