Pour obtenir que les utilisateurs non authentifiés ne peuvent pas voir les images juste en deviner l'URL (par exemple http://www.test.com/images/123.jpg
je stocke toutes les images en dehors du répertoire public et offre une URL qui accepte l'ID unique de l'image et vérifie si l'utilisateur est authentifié:Empêcher navigateur à partir d'images mise en cache
// 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);
}
}
Ainsi, un utilisateur authentifié obtient l'image « 123.jpg » et un utilisateur non authentifié obtient l'image « no_access.jpg » qui est juste un texte rouge « Pas d'accès » sur un fond blanc
Tout fonctionne parfaitement, aussi longtemps que je effacer manuellement le cache de mon navigateur (Chrome dans mon cas) après la déconnexion.
Mais si
- I login et accéder à l'image via
http://www.test.com/image/5
puis-je obtenir l'image '123.jpg' (correct jusqu'à ici) - puis appeler et
http://www.test.com/image/5
vous déconnecter une fois de plus je devrais obtenir le « no_access.jpg » mais à cause du cache du navigateur, je reçois l'image protégée « de 123.jpg » (cache remplace le contrôle d'autorisation)
je l'ai déjà essayé <meta http-equiv="expires" content="0">
mais sans aucun succès. Agian, si j'efface le cache, tout est parfait - mais les utilisateurs normaux ne le feraient pas.
Comment indiquer au navigateur de ne pas mettre en cache?
Merci d'avance!
Vous pouvez toujours ajouter un index unique aux liens de l'image, de sorte que le navigateur mettra en cache cet index unique, comme ce 'http: //www.test.com/image/5? DfDf23', mais il doit être différent à chaque demande. – JOUM
Solution de contournement splendide! Merci beaucoup ... mais je me demande toujours s'il existe un moyen quelconque pour que le serveur déclenche un effacement du cache du navigateur (par exemple, lors de la déconnexion). – Steevie
'clearing de cache-navigateur' vous voulez mettre le doigt sur le navigateur des utilisateurs? ;) – JOUM