我在做我的項目上傳圖像功能。這裏我將文件保存在公共文件夾(public/img/myfiles /)中。我要限制的文件訪問,如果管理員用戶沒有登錄。(即)Laravel - 保護從網絡訪問圖像文件夾
如果我把URL像
https://domain/img/myfiles/filename.jpg
它應該重定向到登錄頁面
https://domain/login
如何要做到這一點?我不想限制特定的圖像關聯的用戶。由於用戶是管理員,我想讓他們完全訪問圖像文件夾。
我在做我的項目上傳圖像功能。這裏我將文件保存在公共文件夾(public/img/myfiles /)中。我要限制的文件訪問,如果管理員用戶沒有登錄。(即)Laravel - 保護從網絡訪問圖像文件夾
如果我把URL像
https://domain/img/myfiles/filename.jpg
它應該重定向到登錄頁面
https://domain/login
如何要做到這一點?我不想限制特定的圖像關聯的用戶。由於用戶是管理員,我想讓他們完全訪問圖像文件夾。
您可以嘗試在您的.htaccess
文件中放置一行,通過PHP腳本路由圖像的所有請求,該腳本只是重定向到登錄頁面(如果不是admin),否則返回請求的圖像。這是想法它可能看起來。
.htaccess
文件:
RewriteRule ^img/myfiles/(\w+)\.([a-z]{3,4})$ image.php?name=$1&type=$2 [L]
image.php
文件:
if(Auth::user()->role == 'admin') {
header("Content-type: image/" + $_SESSION['type']);
readfile("/path/to/image/" + $_SESSION['name'] + '.' + $_SESSION['type']);
else {
header("Location: http://mysite.com/login");
}
請注意,這可能,如在這個例子中所寫,打開管理員可以利用的安全漏洞。 – BenjaminRH 2013-03-18 11:28:41
謝謝你的回覆..我會試試這個。但有沒有辦法通過路由過濾器來做到這一點?像Route :: get('img/myfiles',array( 'before'=>'auth' )); – viji 2013-03-18 11:28:57
@viji如果你可以用Laravel做到這一點,我不確定我的頭頂是什麼,但我認爲它可能在'.htaccess'中更安全。 – BenjaminRH 2013-03-18 11:31:16
我認爲你將不得不使用'.htaccess'要做到這一點,也許這可以幫助你:HTTP:// stackoverflow.com/questions/5664611/protect-a-folder-by-htaccess-rewriterule-to-php – Adrenaxus 2013-03-18 11:13:57
這是一個替代解決方案,無需改變.htaccess中的任何內容,換句話說就是100%基於Laravel的解決方案,這適用於Laravel 5.x和更新。 http://stackoverflow.com/questions/30682421/how-to-protect-image-from-public-view-in-laravel-5/30682456#30682456 – 2016-02-29 12:41:06