URL을 추측하여 인증되지 않은 사용자가 이미지를 볼 수 없도록하려면 (예 : http://www.test.com/images/123.jpg
) 모든 이미지 을 공용 디렉토리 외부에 저장하고 그림의 고유 ID를 허용하는 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
를 통해 이미지에 액세스
- 이라면 나는
- 다음 한 번 더 그때 내가 가야 로그 아웃
http://www.test.com/image/5
를 호출 이미지 (여기까지 올바른) '123.jpg'를 얻을 'no_access.jpg'하지만 브라우저 캐시의 내가 보호 된 이미지 '123.jpg'를 얻을 수 있기 때문에 (캐시가 인증 검사를 무시)
이미 <meta http-equiv="expires" content="0">
을 시도했지만 어떤 성공없이. Agian, 캐시를 하드 캐시하면 모든 것이 완벽하지만 일반 사용자는 그렇게하지 않을 것입니다.
어떻게 캐시하지 않도록 브라우저를 설정합니까?
미리 감사드립니다.
고유 한 색인을 이미지 링크에 항상 추가 할 수 있으므로 브라우저는 'http : //www.test.com/image/5? dfDf23'과 같이 고유 색인을 캐시하지만 다른 값을 사용해야합니다 각 요청마다. – JOUM
화려한 해결 방법! 고마워요.하지만 서버가 브라우저 캐시 지우기 (예 : 로그 아웃시)를 트리거하는 방법이 있는지 궁금합니다. – Steevie
'브라우저 캐시 삭제 '사용자의 브라우저에 손가락을 넣고 싶습니까? ;) – JOUM