Security laravel-4中机密文件的受控访问

Security laravel-4中机密文件的受控访问,security,laravel-4,public,accessible,Security,Laravel 4,Public,Accessible,我读到过,公共文件夹中的文件可以通过Laravel中的web浏览器访问。当我键入公用文件夹中文件的路径时,我看不到该文件,除非我在路由中定义了路径 我正在制作一个下载页面,这样用户就可以通过从中下载加密/机密材料 我不希望用户能够以下载表单或其他受控方法以外的任何其他方式访问文件 我是否需要创建一个私人文件夹并存储文件。如果我这样做了,我还能访问后端的文件吗 或者,公用文件夹中的文件除非由路由定义,否则无法访问?如果是这样的话,我可以将文件存储在公用文件夹下吗?任何人都可以访问公用文件夹下的文件

我读到过,公共文件夹中的文件可以通过Laravel中的web浏览器访问。当我键入公用文件夹中文件的路径时,我看不到该文件,除非我在路由中定义了路径

我正在制作一个下载页面,这样用户就可以通过从中下载加密/机密材料

我不希望用户能够以下载表单或其他受控方法以外的任何其他方式访问文件

我是否需要创建一个私人文件夹并存储文件。如果我这样做了,我还能访问后端的文件吗


或者,公用文件夹中的文件除非由路由定义,否则无法访问?如果是这样的话,我可以将文件存储在公用文件夹下吗?

任何人都可以访问公用文件夹下的文件,除非您的Web服务器将策略设置为特定目录

如果您当前无法访问公用文件夹中的文件是因为,可能,则您没有正确写入url,即:

档案

/var/www/myapp/public/img/logo.png 
可通过以下途径访问:

http://myapp.com/img/logo.png
请注意,只有当您的Web服务器配置正确且您的
.htaccess
文件已就位且能够重写您的URL时,文件夹的公共部分才会出现在您的URL中

对于敏感文件,您可以将其存储在您的应用程序文件夹(或公共文件夹以外的任何其他文件夹)中,只有您的应用程序可以访问这些文件夹,类似这样的内容也可以:

/var/www/myapp/app/storage/<create a new folder here>
“=>”auth“之前的过滤器
”将确保未经身份验证的用户永远无法访问文件

在控制器中,您可以执行以下操作以检查是否可以看到文件:

class ReadFileController extends Controller {

    public function read($fileName)
    {
        if(Auth::user()->id == 1) // of course this is not a good way, just an example
        {
            return $this->getFile($fileName);
        }
        else
        {
            return Response::make(null, 403); // forbidden
        }
    }

    private function getFile($fileName)
    {
        ...
    }

}

此外,您可以在路由中使用身份验证“”,以添加更好的访问控制

Route::get('routeName', ['middleware' => 'auth', 'uses' =>'XController@action']);

这就澄清了一些事情。澄清一下,当您说“…webserver正确配置…”时,您的意思是正确配置以支持不需要键入public。通常配置不正确?此外,身份验证是否只是允许某些用户使用该路由访问任何文件,或者是针对每个文件/目录进行身份验证,我的意思是,如果用户需要,他们可以键入一个路径来查看一个文件,而他们应该只能查看另一个文件。配置为指向public并重写URL,并从中删除index.php。如果配置正确,这就是您访问文件的方式,其他人也可以访问。我只是想回答你的第二个问题。
Route::get('routeName', ['middleware' => 'auth', 'uses' =>'XController@action']);