Laravel文件隐私

时间:2018-12-13 20:27:59

标签: php laravel

我有一个应用程序,用户可以在应用程序中注册,也可以上传自己的文件。

我的问题是,如何才能以这种方式为文件添加隐私权?如果没有身份验证就无法访问文件,每个用户只能访问自己的文件

2 个答案:

答案 0 :(得分:1)

这里的答案有点取决于如何确保这一切的安全性。

上传文件时,您可以为文件生成一个随机的长文件名。很难猜到这些密码-就像一个相当强壮的密码-在大多数情况下都能解决。

如果您使用store()方法,Laravel实际上就是这样做的:

$path = $request->file('avatar')->store('avatars');

如果您需要的不仅仅是安全性,可以将上传的文件存储在非公共位置。然后,添加一条路由(例如download/{id}),让该路由检查用户对相关文件的权限,并在授权的情况下将该文件提供给浏览器:

return Storage::download('path/to/the.file');

Storage::download通过Laravel代理文件,因此即使未存储在公用文件夹中的文件也可以使用。

答案 1 :(得分:0)

保留所有用户都无法访问的文件夹中的所有文件,以防止任何URL猜测。

您的代码将负责验证用户是否拥有该文件。清除用户后,您可以将文件移到公众可以访问的临时文件中:

Storage::copy('restricted_folder/file.jpg', 'public_folder/random_name.jpg');

然后返回响应,该响应将迫使用户下载文件,并在请求后删除临时文件:

    return response()->download('public_folder/random_name.jpg','file.jpg')->deleteFileAfterSend();