Laravel的公共存储中间件

时间:2017-06-09 09:16:26

标签: php laravel laravel-5 laravel-5.4

我有这样的结构:laravel/storage/app/public/images/id_of_user/

其中user的id是用户的id。

这是我的中间件:

public function handle($request, Closure $next)
 {
    if($request->user_id == Auth::user()->id{

    return $next($request);
    }
return back();
}

并制定了这样的路线:

Route::group(['middleware' => 'storagemiddleware'], function () {

Route::get('storage/images/{$user_id});

});

这不起作用。每个人仍然可以访问每个人的图像。老实说我没想到这个有用,因为它看起来存储有自己特殊的路径和设置。

我想要的是只允许用户在其存储空间中查看其文件夹的内容。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

仔细阅读文档的这一部分:https://laravel.com/docs/5.4/filesystem

如果想要让文件只对您拥有的文件可访问,那么您希望将它们放在存储目录中的某个位置,然后通过控制器访问它们。公共目录中的任何内容都是公开的。

您可以设置一个像API_KEY这样的目录结构来保持分离,然后从路由和指定的参数中检索它们。