存储中的安全文件laravel



我正在像这样上传存储中的文件:/存储/上传/合同/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/

相关内容

  • 没有找到相关文章

最新更新