保护图像免受公共场景影响5

时间:2017-05-20 11:17:47

标签: laravel laravel-5.2

我已经看到某些保护图像的技术,只向经过身份验证的用户显示。一个例子是

how-to-protect-image-from-public-view-in-laravel

它只告诉我们大约1张图片。如果我们想要检索多个私有图像并将其显示给经过身份验证的用户,该怎么办?什么是最合适的方式?我们无法生成存储目录的链接吗?

1 个答案:

答案 0 :(得分:1)

将图像保存在不可公开访问的存储文件夹中。然后根据参数创建一个生成图像的路径,该参数可以是图像名称或路径。使用auth中间件包装此路由。根据路径的参数,在路径的控制器方法中使用适当的标题显示图像内容。

编辑:检查一下,给你一个想法。

示例路线

Route::get('securedimage/{name}', 'SecuredImageController@show');

样本控制器方法

public function show($name)
{
    // check if the image with name exists in the folder that you store them
    // If the image doesn't exist then display dummy image or return nothing
    $imagePath = storage_path('/upload/' . $name);

    return Image::make($imagePath)->response();
}

然后你可以像这样访问图像

<img src="http://example.com/securedimage/ball.jpg">
<img src="http://example.com/securedimage/topsecret.jpg">