【问题标题】:Laravel - Protect image folder from web accessLaravel - 保护图像文件夹免受网络访问
【发布时间】:2013-03-06 15:59:52
【问题描述】:

我正在我的项目中上传图片功能。在这里,我将我的文件保存在公共文件夹 (public/img/myfiles/) 中。如果管理员用户未登录,我想限制文件访问。(ie)

如果我把网址像

https://domain/img/myfiles/filename.jpg

它应该重定向到登录页面

https://domain/login

如何做到这一点?而且我不想将特定图像限制为关联用户。由于用户是管理员,我想授予他们对图像文件夹的完全访问权限。

【问题讨论】:

标签: image upload laravel protection


【解决方案1】:

您可以尝试在.htaccess 文件中添加一行,通过一个 PHP 脚本路由所有对图像的请求,如果不是管理员,该脚本只会重定向到登录页面,否则返回请求的图像。这是一个想法它的外观。

.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");
}

【讨论】:

  • 请注意,如本例所述,这可能会打开管理员用户可以利用的安全漏洞。
  • 谢谢你的回复..我会试试这个。但是有没有办法通过路由过滤器来做到这一点?比如 Route::get('img/myfiles',array( 'before' => 'auth' ));
  • @viji 我不确定你是否可以用 Laravel 做到这一点,但我认为它在.htaccess 中可能更安全。
猜你喜欢
  • 2016-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-07
  • 2014-01-22
  • 1970-01-01
相关资源
最近更新 更多