Для генерации временной ссылки на картинку напишите хелпер, в функции принимайте ссылку на картинку и сохраняйте ее в сессии. Пример:
namespace App\Helpers;
trait ProtectedImage {
static function url($image, $path = 'images/'){
$hash = md5(time() . $image . 'somestring');
session(['image.'.$hash => $image]);
return $hash;
}
}
Создаем наш роут, по которому будем выдавать картинку, к примеру, из Storage:
Route::get('images/{filename}', function ($filename)
{
$realfilename = session('image.'.$filename);
if(empty($realfilename)) abort(404);
$path = storage_path() . '/' . $realfilename;
$file = File::get($path);
$type = File::mimeType($path);
$response = Response::make($file, 200);
$response->header("Content-Type", $type);
return $response;
});
При выводе ссылки на картинку, соответственно
ProtectedImage::url('myimage.jpg');
Принцип работы:
Передаем название картинки функции в хелпере, хелпер сохраняет в сессию с md5 ключом, при открытии роута /images/ключ получаем из сессии реальное имя, и выдаем картинку.
Это лишь пример реализации. Можно дополнить как угодно. Либо вместо сессий использовать шифрование с открытым и приватным ключом. Решать вам :)