[英]Can I implement a transparent, PHP-based authentication layer with Apache's help?
我正在為 web 站點尋找一個透明的、PHP 驅動的身份驗證層。
我知道以下簡單的方法:
力學:
缺點:
力學:
缺點:
include "login_required.inc.php";
或任何 PHP 文件頂部的類似文件,任何人都可以訪問該文件。我想實現基於 PHP 的登錄解決方案,但以某種方式配置 Apache 以調用login_required.inc.php
(或類似的)透明地作為中間步驟,當請求任何 Z2FEC392304A5C23AC138DA22847 文件時
該腳本將:
這是 pipe 的夢想嗎? 或者我能做到嗎? 如果是這樣,怎么辦?
如果您通過 index.php 重寫所有 php 請求,則 index.php/php 將控制對任何內容的訪問。
RewriteRule ^(.*)$ /index.php?pageid=$1 [QSA,L]
類似的東西會將任何請求推送到 index.php,您可以在其中進行身份驗證,然后它將內容分流出來......
其中的 QSA 將保留任何查詢字符串參數等。
我認為您應該重組您的網站以使用Front Controller 。 幾乎每個框架都使用 FrontController 模式是有原因的:單點訪問使您的應用程序更簡單。
一種可能性是使用.htaccess
ModRewrite
將所有請求重定向到,例如login_required.php?redirect=<ORIGINALLY-REQUESTED-SCRIPT>
。
login_required.php
然后可以執行其魔術並執行以下操作之一:
include
<ORIGINALLY-REQUESTED-SCRIPT>
。header("Location: <ORIGINALLY-REQUESTED-SCRIPT>)";
我相信,只會再次與.htaccess
並導致無限重定向循環! 將.htaccess
ModRewrite
指令設置為僅基於HTTP_REFERER
的值有條件地重定向是不夠安全的。這不是首選解決方案,但有可能......
另一種可能:
只有一個入口點。 只有一個可以從外部世界訪問的文件,例如index.php?target=<REQUESTED-SCRIPT>
。 這一文件可以包含身份驗證邏輯並include
所需的腳本。
.htaccess
或簡單的文件權限將阻止所有其他文件進行外部訪問。
這是一個很好的解決方案,但是要更新整個現有系統中的所有URL 將是一個很大的變化。
編輯顯然這被稱為“前端控制器”模式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.