2017-05-20 12 views
0

私は、画像を保護する特定の手法を見て、認証されたユーザーにしか表示しないようにしています。一例としては、それは私たちだけで約1イメージを伝え画像をパブリックから保護するlaravel 5

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

です。複数のプライベート画像を取得して認証されたユーザーに表示したい場合はどうなりますか?最も適切な方法は何ですか?私たちはストレージディレクトリへのリンクを生成できません。

答えて

1

一般にアクセスできないストレージフォルダに画像を保存します。次に、パラメータに基づいてイメージを生成するルートを作成します。このルートはイメージ名またはパスになります。 authミドルウェアでこのルートをラップします。そのパラメータに基づいて、ルートのコントローラメソッドに適切なヘッダーを付けてイメージコンテンツを表示します。

編集:これをチェックしてください。

サンプルルート

Route::get('securedimage/{name}', '[email protected]'); 

サンプルコントローラのメソッド

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"> 
+0

のような画像にアクセスすることができます – root

+0

何枚の画像でも問題ありません。あなたのhtmlまたは直接の画像にリンクすると、あなたの画像リソースを直接取得するのではなく、あなたのルートにヒットします。 – Sandeesh

+0

上記のリンクは、htmlファイル内でイメージインスタンスを使用する方法を示しています。私は20の異なる画像を1ページに表示するように言えば、その最後の行を20回書かなければならないだろうか???全体のプロセスを説明してください – root

関連する問題