Можно защитить изображения от общественное мнение в папке Laravel 5.x.
Создать images
папку в папке storage
(я выбрал storage
папку, потому что он имеет право на запись уже, что я могу использовать, когда я загружать изображения на нем) в Laravel как storage/app/images
.
Переместить изображения, которые вы хотите защитить из общей папки, в новую созданную папку images
. Вы также можете выбрать другое место для создания папки images
, но не внутри общей папки, но в структуре папок Laravel, но все же логический пример местоположения, а не внутри папки контроллера. Затем вам нужно создать маршрут и контроллер изображения.
Создать маршрут
Route::get('images/users/{user_id}/{slug}', [
'as' => 'images.show',
'uses' => '[email protected]',
'middleware' => 'auth',
]);
Маршрут будет пересылать все доступы запрос изображения на странице аутентификации, если человек не вошел в систему.
Создать ImagesController
class ImagesController extends Controller {
public function show($user_id, $slug)
{
$storagePath = storage_path('app/images/users/' . $user_id . '/' . $slug);
return Image::make($storagePath)->response();
}
}
Вы можете изменить путь к хранилищу и структуру файлов/папок по своему усмотрению, это просто показать, как я это сделал и как это работает.
Вы также можете добавить условия, чтобы показывать изображения только для определенных членов в контроллере.
Также возможно хэш-файл с именем файла, меткой времени и другими переменными.
Дополнение некоторые спросили, если этот метод может быть использован в качестве альтернативы загрузки общих папок, YES это возможно, но не рекомендуется практика, как описано в этом answer. Таким образом, один и тот же метод можно также использовать для загрузки изображений в путь хранения, даже если вы не собираетесь их защищать, просто следуйте одному и тому же процессу, но удалите 'middleware' => 'auth',
.Таким образом, вы не дадите разрешение 777 в своей общей папке и все еще имеете безопасную среду для загрузки. В том же упоминании answer также объясняется, как использовать этот метод без аутентификации в случае, если кто-то его использовал или предоставил альтернативное решение.
Вы пробовали настроить маршрут для защиты пути изображения? – haakym
нет, но я попробую следующий ответ и дам вам знать –
@haakym, это пример ниже работал для меня. Вы правы, это в пути. –