2011-10-30 30 views
1

我已經使用過.htaccess HTTP認證更換的AuthUserFile文件每次我需要一個完整的目錄快速和骯髒的密碼保護(大部分的時間時,爲了躲第三方我安裝的私人應用程序)。現在我寫了一些PHP代碼來用OpenID代替本地密碼。這使我可以擺脫我的PHP站點中的HTTP身份驗證。然而,我仍然試圖弄清楚我可以在非PHP的東西(從第三方程序到隨機的東西)中使用的技巧。定製的PHP腳本在.htaccess

阿帕奇似乎並不支持在默認情況下自定義腳本(無論我做什麼,它應該在我的託管服務提供商工作)認證。這使得使用mod_rewrite路由一切的顯而易見的解決方案,雖然是在檢查憑據並讀取目標文件,但是1)它看起來像一個性能殺手2)一個PHP腳本,它會動態的東西,如其他PHP腳本干擾。

我想知道是否有一種方法來調整路由器的方法,使腳本不需要發送文件,或者如果我忽略了其他一些方法。任何想法?

+0

這看起來很有趣mod_auth_openid的用途是什麼,也許你可以跟你的主人怎麼做呢? http://findingscience.com/mod_auth_openid/ – hakre

回答

0

我覺得你的mod_rewrite方法是做到這一點的唯一途徑 - 而不是使用readfile()(我想你說的,根據你說的話有關it will interfere with dynamic stuff, such as other PHP scripts),你只需include()他們,讓原始文件被寫入直接輸出並執行PHP代碼。

+0

不直,他們將通過PHP解析器錯位(如果他們有內部PHP甚至執行)。 – hakre

+0

對文件名應用一個過濾器只包含''''PHP文件和''readfile''一切?看起來像一個很大的問題 - 因爲Apache沒有方法來處理自定義auth腳本,* only *選項是強制Apache通過自定義auth腳本或Apache模塊傳遞每個請求。寫一個Apache模塊,或者使用與''的無論我做什麼,它應該在我的託管provider'工作要求mod_auth_openid'可能的衝突,所以你只剩下唯一的選擇就是通過自定義腳本來傳遞的一切。 – DaveRandom

+0

感謝您的努力。我已經浪費了瀏覽Apache文檔的荒謬時間,看來它不能按照我的想法完成。 –

0

您可以使用PHP HTTP-AUTH http://php.net/manual/en/features.http-auth.php

如果OpenID是你需要考慮的Apache

+0

不幸的是,您無法將HTTP身份驗證與自定義HTML表單(OpenID的情況)結合使用,因爲瀏覽器需要使用用戶名和密碼發送特定的HTTP標頭。 –

+1

@ÁlvaroG.Vicario雖然我傾向於同意,'你不能自定義HTML結合HTTP認證forms'有一點變通來此 - 儘管它* *依賴於JavaScript,哪一個不應該做的......但如果你真的想要的話,你可以創建一個AJAX請求來設置正確的HTTP認證細節,並且這些細節將被轉交給後續的請求。我不推薦它,我只是指出它可以完成... – DaveRandom