2011-09-26 23 views
3

我不知道這是否是可能的,但如果我不問,我永遠不會知道:)如何發送那種執着「授權」頭用PHP

我有exact problem discuted in this topic。這就是:我在一些文件夾中有一些靜態文件,我只想要一些用戶看到這些內容。該用戶來自以前的登錄。

該主題討論了一些可能的解決方案,但我想到了另一種可能的解決方案。如果我可以用PHP發送包含用戶的用戶名和密碼的Authorization HTTP Header,並將它保留在後繼請求中(正如我認爲它發生在Apache身份驗證中)。我會在我以前的登錄過程中發送這些頭文件,然後當用戶嘗試訪問其目錄時,.htaccess會檢查他是否是有效的用戶。

我試圖用PHP與發送授權頭:

header('Authorization: Basic '.base64_encode($USERNAME.':'.$PASSWORD).PHP_EOL); 

但它們只存在於一個請求。

在.htaccess中,我檢查過不可能有唯一的`Require user USERNAME',所以我認爲有必要創建一個htpasswd文件,存儲與登錄過程使用的憑據相同的憑據,並且然後創建一個平常的認證配置(基本或摘要):

AuthType Basic 
AuthName "Restricted Files" 
AuthUserFile /path/to/htpasswd/file 
Require user USERNAME 

預先感謝您

+1

http://php.net/manual/en/features.http-auth.php – hakre

+0

我看過了,但是我沒有找到答案 –

回答

1

你可以有被Apache處理的基本或Digest HTTP認證,用一個簡單的「需要有效的用戶」。 沒有apache可以實現很多mod_auth變體,請檢查this page中的mod_auth *。 所以你可以告訴Apache到authenticate on your database,甚至用你提供的自定義代碼mod_authnz_external進行認證。

外部腳本的支持是好的,你可以實現一個高速緩存級別一個會話認證(防止重做整個認證每個請求的資源),這是基本上是與默認的基於Cookie的會話發生(第一身份驗證,那麼只需傳輸PHPSESSID,我們將檢查會話是否存在)。

0

我曾經想過另一種可能的解決方案。如果我可以用PHP發送授權HTTP標頭,

你不能

+0

哦,好的,活着就是:) –

相關問題