任何人都可以访问公共文件夹下的文件,除非您的网络服务器将策略设置为特定目录。
如果您当前无法访问公用文件夹中的文件,可能是因为您没有正确写入 url,即:
一个文件在
/var/www/myapp/public/img/logo.png
可通过以下方式访问:
http://myapp.com/img/logo.png
请注意,仅当您的网络服务器配置正确且.htaccess
文件已就位并且能够重写您的 URL 时,您的 URL 中才不会出现文件夹的公共部分。
对于敏感文件,您可以将它们存储在您的应用程序文件夹(或公共以外的任何其他文件夹)中,只有您的应用程序可以访问,这样可以:
/var/www/myapp/app/storage/<create a new folder here>
然后,是的,创建一条路径来读取和呈现您的安全文件:
Route::get('readfile/{fileName}', ['before' => 'auth', 'use' => 'ReadFileController@read']);
过滤器'before' => '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)
{
...
}
}