我正在像这样上传存储中的文件:/存储/上传/合同/19/121999/document.pdf
现在我需要只允许经过身份验证的用户查看这些文档,我使用以下途径:路由::get('/storage/{pathToFile}',function($pathToFile({
if (auth()->user()) {
return response()->file($pathToFile);
} else {
return 'Nope, sorry bro, access denied!';
}
});
这不起作用,即使用户没有登录,仍然可以加入所有文件。
知道吗?
感谢
是否将公用文件夹符号链接到存储文件夹?如果是这样的话,它仍然是可访问的,因为默认的公共入口点将是";"公共";文件夹so";[主机]/存储器";将在该文件夹中可用。
我过去所做的是使用S3驱动程序,并将文件可见性设置为私有,然后使用:
public function get($path, $image)
{
$file = Storage::disk('s3')->get("private/images/". $path. "/" . $image);
return response($file, 200)->header('Content-Type', 'image/png');
}
在您的情况下,这将更改为:
if (auth()->user()) {
$file = Storage::disk('s3')->get($pathToFile);
return response()->file($file);
} else {
return 'Nope, sorry bro, access denied!';
}
注意:S3驱动程序支持多种存储解决方案:https://flysystem.thephpleague.com/v1/docs/adapter/aws-s3-v2/