2012-03-30 68 views
2

我試着去創建一個網站,授權用戶可以下載PDF文件... 的PDF文件的根目錄身份驗證是由PHP會議...的.htaccess存根文件保護與PHP會話身份驗證的網站

所以要保護文件盜鏈,我發現了一個有效的解決方案

PHP: 在成功登錄到新文件命名的會話ID:

if($logged_in) { 
    touch('auths/' . session_id()); 
} 

那麼的.htaccess檢查會話ID文件是存在的,如果文件不是它的存在重定向登錄..

# checks if a file named 
RewriteCond %{HTTP_COOKIE} PHPSESSID=(\w+) 
RewriteCond %{DOCUMENT_ROOT}/auths/%1 -f 
RewriteRule ^(.*)$ $1 
RewriteRule /* /login.php [L] 

這是工作,到目前爲止,做了一個簡單的測試環境....

的問題是這需要與使用下面的一個CakePHP的應用程序相結合。 htaccess的:

# CakePHP 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ index.php?/$1 [QSA,L] 
</IfModule> 

所以我的問題是如何能的.htaccess修改,使得其只有在請求* .pdf和也與CakePHP的規則一起工作,檢查......

謝謝!

+0

您是否將ACL用於您的應用程序? – Fury 2014-01-10 10:17:48

回答

0

我不認爲結合使用.htaccess和CakePHP將會很好。兩者都是不同種類的軟件,並沒有本地通信方法。在你爲Apache編寫自己的模塊之前,我認爲你不會做出好的解決方案。在你的地方,我寧願讀整個文件到變量,而不是用適當的頭部打印它。內存成本高昂的解決方案,但安全,獨立於服務器,並且將來很容易修改。