【问题标题】:How can I limit/restrict users who can access files in my storage's folder? (laravel)如何限制/限制可以访问存储文件夹中文件的用户? (拉拉维尔)
【发布时间】:2019-12-17 07:56:02
【问题描述】:

我已经创建了一个符号链接来从存储storage/app/public访问公用文件夹

php artisan storage:link

这一次我想知道如何过滤可以查看图像的用户?比如,我如何实现Only MeMy Friends Only

先生们有什么想法吗?

【问题讨论】:

  • 如何创建路由,访问那里的所有图像,然后应用身份验证和策略来设置谁可以查看图像?
  • @Fayakon 也在考虑这一点,但我的问题是,如果我将文件放在 public 文件夹中,任何人都可以在不使用路由的情况下访问它。

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


【解决方案1】:

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

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


我个人保存 /storage/app/files 中的文件,而不是 /public 文件夹中的文件(因为它告诉每个人 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);

【讨论】:

    【解决方案2】:

    我认为您应该在表 '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
    

    【讨论】:

    • 已经有一个隐私字段,我的问题是如何限制受限用户查看公共文件夹中的文件。
    猜你喜欢
    • 2018-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多