2009-11-16 52 views
3

我正在寫一個簡單的內部前端到Subversion。感謝WebDAV,我們已經有了一個Apache安裝程序來提供SVN存儲庫。此外,身份驗證通過Apache領域和Open Directory完成。對於它的價值,這基本上是一個非常漂亮的Mac OS X Server 10.6安裝程序。現在如何讓當前用戶登錄到apache領域?

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

我在PHP這樣做,但我不一定要實現這個使用PHP。如果我可以在shell腳本中獲取信息,那也可以。重要的是我以某種方式獲取信息。我第一次開發的解決方案,因爲它正確報道我的用戶名是我擺出的工作,僅僅是呼籲:

get_current_user(); 

然而,這似乎總是返回我的用戶名,即使一些其他用戶正在拉開在登錄到域時的動作。有沒有辦法獲得正確的用戶?


編輯:我可能已經有點太急於在這裏跳槍。看起來前一個變量在一段時間後沒有被設置。但是,用戶仍然登錄,因爲沒有登錄請求。因此,下面提出的解決方案並不適用。


現在我感覺像一個idjit。這個簡單的代碼片段工作(雖然它是很難找到):

$username = $_SERVER["PHP_AUTH_USER"]; 

然而,這並不:

$username = apache_getenv("REMOTE_USER"); 

任何人有一個想法,爲什麼後者不工作?我能找到的唯一文檔表明這隻適用於Apache 2.但是,實際上我運行的是Apache 2,所以不能這樣做。

回答

3

因此,經過長時間的Google搜索之後,我意識到獲取用戶名的方法隨着每個傳遞的PHP版本而改變。這似乎是一個目前的解決方案是從下面的變量獲取數據:

$_SERVER['REMOTE_USER']; 

然而,這個變量可能會或可能不會進行設置。我之所以能夠正確查看信息的原因是,當我登錄到領域時,信息在標題中發送,然後訪問該領域之外的PHP腳本。信息確實到達,但不可靠。

Apache docs實際上告訴你這一個「哦,順便說一句」 - 時尚。我不確定是否在同一臺主機上的多個領域進行身份驗證,但無論如何,這都解決了問題。

相關問題