我有一个laravel应用程序(5.4)
每个用户在/ public下都有一个文件夹,管理员可以上传(通过FTP)一些视频供用户查看。每个用户都有不同的视频。
我现在遇到的问题是,公共文件夹中的所有内容都是可访问的。此外,如果用户未登录。如何避免这种情况?
答案 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
}
}
我没有测试过,所以如果你有问题请告诉我