Laravel安全存储路线

时间:2019-01-08 09:50:16

标签: laravel authentication storage

我正在使用Storage :: url()函数为存储目录中的文件生成下载链接,我还将存储目录链接到公共目录,并且一切正常。

但是,现在任何人都可以下载文件而无需任何身份验证。在无需重新编写控制器内部的下载逻辑的情况下,保护以/ storage / .....开头的所有路由的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

您必须将下载URL添加为route.php文件中的路由:

Route::get('downloads/{file}','MyController@download')->where('file', '^[^/]+$')->middleware('auth');

当然,不要忘记检查文件是否存在,之后您可以使用

 $reponse()->download() 

返回下载响应。该方法具有3个参数:文件路径,文件名和HTTP响应标头。

有关更多详细信息,请检查此:

https://laravel.com/docs/5.7/responses#file-downloads