如何限制/限制可以访问存储文件夹中文件的用户? (laravel)

时间:2019-12-17 07:56:02

标签: laravel laravel-5 laravel-6 laravel-filesystem laravel-storage

我已经创建了一个符号链接,可以从存储200000

访问公用文件夹
storage/app/public

这次,我对如何过滤可以查看图像的用户产生了疑问。就像,如何实现 Only Me 仅限我的朋友

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

  

注意:此解决方案存在一些性能问题。这仅是为了回答问题,向下滚动可查看其他方法。

<input type="file" name="file"> 


我个人保存文件而不是/storage/app/files文件夹内的/public(因为它告诉所有人公开)。

request()->file->storeAs('files', 'filename.ext'); 


查看并添加限制:创建负责查看的路由:

Route::get('files/{$filename}', 'FileController@show')->name('files.show);

控制器:

public function show($filename)
{
    $path = storage_path('app/files/'.$filename);

    //do some If-Else or Filters here, for user who can access the file

    return response()->download($path, null, [], null);
}


删除文件:

File::delete('app/files/'.$filename);

答案 1 :(得分:0)

我认为您应该在表“ storage_file”中设置一个字段“ image_option”。

image_option: string,
image_option = {privacy_level:[1, 2, 3]}
privacy_level = 1 // public
privacy_level = 2 // only me
privacy_level = 3 // only friend only