【问题标题】:Protect Images from being public laravel 5保护图像不被公开 laravel 5
【发布时间】:2017-10-20 11:30:55
【问题描述】:

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

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

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

【问题讨论】:

    标签: laravel laravel-5.2


    【解决方案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">
    

    【讨论】:

    • 如果我想显示多个图像而不是单个图像怎么办
    • 图片数量无关紧要。当您在 html 中或直接链接到图片时,它会点击您的路线来获取图片,而不是直接获取您的图片资源。
    • 我刚才提到的链接告诉我们如何制作一个图像实例以在 html 文件中使用它。如果我可以说在一个页面上显示 20 个不同的保护图像,我是否必须将最后一行写 20 次?请说明整个过程
    • @AhmedKhan 更新了我的答案,让你知道我在说什么
    • 太棒了。非常感谢
    猜你喜欢
    • 2015-08-21
    • 2021-01-18
    • 1970-01-01
    • 2013-09-23
    • 1970-01-01
    • 2016-02-16
    • 2016-01-11
    • 2017-07-22
    相关资源
    最近更新 更多