Apache-2.2
可以將 Apache 配置為需要基於查詢字元串的身份驗證嗎?
我已經為網站的某些區域配置了基本的 Apache 身份驗證,只有管理員才能訪問這些區域。大多數 Web 應用程序通過將它們的管理頁面放在一個子目錄中來實現這一點,因此我為該目錄配置了身份驗證,例如“/goodapp/admin”。問題是某些應用程序依賴於查詢字元串,例如。
/badapp/index.php?page=admin
有什麼方法可以根據查詢字元串將 Apache 配置為要求對這樣的 URL 進行身份驗證?
我對此進行了一些研究,但我認為 Apache 不會讓您以允許您有條件地要求身份驗證的方式匹配查詢字元串。您可以匹配目錄或文件,但不能匹配查詢字元串 AFAIK 中的項目(除非您正在執行 URL 重寫)。這是有道理的,因為您可能不希望應用程序邏輯位於 Web 伺服器配置中。
您可以做的是在任何具有管理功能的腳本前面加上這樣的檢查:
$isLoggedIn = array_key_exists('PHP_AUTH_USER', $_SERVER); if (!$isLoggedIn && $isTryingToUseAdminFeature) { // redirect to login.php; this file has two properties: // 1) the apache conf requires authentication to access it // 2) it redirects the user back from whence they came }
第二次,
PHP_AUTH_USER
應該設置,所以$isLoggedIn
將是真的。然後在您的程式碼中,您可以有條件地顯示/允許管理功能。