不在公共文件夹中的laravel视频

时间:2018-05-06 07:31:06

标签: laravel storage public protected

我有一个laravel应用程序(5.4)

每个用户在/ public下都有一个文件夹,管理员可以上传(通过FTP)一些视频供用户查看。每个用户都有不同的视频。

我现在遇到的问题是,公共文件夹中的所有内容都是可访问的。此外,如果用户未登录。如何避免这种情况?

1 个答案:

答案 0 :(得分:0)

假设我们有2个用户拥有这些用户名:

  • 约翰
  • 萨拉

然后你会有2个文件夹:

  • storage/app/john
  • storage/app/sarah

现在要访问john的文件,你应该在你的routes / web.php中有以下内容:

Route::get('/file/{username}/{name}','FilesController@getFile');

然后在FilesController添加此功能:

public function getFile($username,$name){
   if(!Auth::user()){
       //user is not logged in
       return response(null,403)
    }
   $auth_user = Auth::user()->username;
   if($username === $auth_user){
    //continue with the request

      $exists = Storage::disk('local')->exists($username .'/'. $name);
     if(!$exists){
         // file not found
         return response(null,404);
     }
      $file = Storage::get($username .'/'. $name);
      return response($file);
   }else{
     // the user doesn't have access
   }
}

我没有测试过,所以如果你有问题请告诉我

More on laravel storage