簡體   English   中英

如何讓當前用戶登錄到apache領域?

[英]How do you get the current user logged in to an apache realm?

我正在為Subversion編寫一個簡單的內部前端。 由於WebDAV,我們有一個Apache設置服務SVN存儲庫。 此外,身份驗證通過Apache領域和Open Directory完成。 對於它的價值,這基本上是一個非常香草的Mac OS X Server 10.6設置。

現在,我們前端負責啟動的一些任務需要知道調用該操作的用戶的用戶名。 例如,創建存儲庫需要它,以便我們獲得實際創建它的人的正確日志。 如果我不提供此信息,SVN只使用創建它的進程,在我們的例子中是運行httpd的用戶。

我在php中這樣做,但我不一定要用php實現這個。 如果我可以在shell腳本中獲取信息也很好。 重要的是我以某種方式獲取信息。 我首先開發的解決方案,我認為它正確報告了我的用戶名,因此只是調用:

get_current_user();

但是,這似乎總是返回我的用戶名,即使其他用戶在登錄到域時啟動了操作。 有沒有辦法獲得正確的用戶?


編輯:我可能有點太快在這里跳槍。 看起來好像前一個變量在一定時間后沒有設置。 但是,由於沒有登錄請求,用戶仍然登錄。 因此,以下建議的解決方案並不真正適用。


現在我覺得自己像個傻瓜。 這個簡單的片段工作(盡管很難找到):

$username = $_SERVER["PHP_AUTH_USER"];

但是,這不是:

$username = apache_getenv("REMOTE_USER");

任何人都知道為什么后者不起作用? 我能找到的唯一文檔表明這只適用於Apache 2.但是,我實際上正在運行Apache 2,因此不可能。

因此,經過谷歌搜索很長一段時間后,我意識到獲取用戶名的方法已經改變了幾乎所有傳遞的PHP版本。 當前的解決方案似乎是從以下變量獲取數據:

$_SERVER['REMOTE_USER'];

但是,可以設置也可以不設置此變量。 我可能確實正確地看到信息的原因是當我登錄到域時信息是在標題中發送的,然后訪問了在所述域之外的PHP腳本。 信息確實到了,但不可靠。

Apache文檔實際上以“哦BTW” - 時尚告訴你這個。 我不確定身份驗證是否在同一主機上的多個領域中進行,但無論如何,這都解決了問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM