Чтобы добиться того, что пользователи, не прошедшие проверку подлинности, не могут просматривать изображения, просто угадывая URL (например, http://www.test.com/images/123.jpg
Я храню все изображения за пределами общедоступного каталога и предлагаю URL-адрес, который принимает уникальный идентификатор изображения и проверяет, аутентификации пользователя:Предотвращение кэширования изображений
// Laravel code behind http://www.test.com/image/5
public function getimage($uid) {
if(Auth::check()) {
$filename = Picture::findorfail($uid)->filename; // e. g. '123.jpg'
return response()->download(storage_path('images/' . $filename), null, [], null);
} else {
return response()->download('images/no_access.jpg', null, [], null);
}
}
Таким образом, идентифицированный пользователь получает изображение «123.jpg» и не прошедших проверку подлинности пользователь получает изображение «no_access.jpg», который не находится всего в красный текст «нет доступа» на на белом фоне.
Все работает отлично, если я вручную очистите кеш моего браузера (Chrome в моем случае) после выхода из системы.
Но если
- Я логин и доступ к изображению с помощью
http://www.test.com/image/5
тогда я получаю изображение «123.jpg» (правильный, пока здесь) - затем выйти из системы и вызвать
http://www.test.com/image/5
еще раз, то я должен получить «no_access.jpg», но из-за кэша браузера я получаю защищенное изображение «123.jpg» (кэш отменяет проверку авторизации)
Я уже пытался <meta http-equiv="expires" content="0">
, но без какого-либо успеха. Агиан, если я сильно очищу кеш, все идеально, но обычные пользователи этого не сделали.
Как сообщить браузеру не кэшировать?
Заранее благодарен!
Вы можете добавить уникальный URL-адрес для ссылок на изображение, поэтому браузер будет кэшировать этот уникальный индекс, например этот 'http: //www.test.com/image/5? DfDf23', но он должен быть другим по каждому запросу. – JOUM
Великолепное обходное решение! Большое спасибо ... но я все еще задаюсь вопросом, есть ли способ, которым сервер запускает очистку кеша браузера (например, при выходе из системы). – Steevie
«Очистка браузера-кеша» вы хотите поместить палец в браузер пользователей? ;) – JOUM