Pour faire court, il suffit de dire que mon application Rails permet aux utilisateurs de télécharger dans l'application des images qu'ils souhaitent conserver. en l'application (c'est-à-dire pas de hotlinking).
J'essaie donc de trouver un moyen d'obscurcir les URL des images de sorte que l'adresse de l'image dépende du fait que l'utilisateur soit connecté ou non au site, de sorte que si quelqu'un essayait de faire un hotlinking vers l'image, il obtiendrait une erreur 401 d'accès refusé.
Je pensais que si je pouvais acheminer la requête à travers un contrôleur, je pourrais réutiliser une grande partie de l'autorisation que j'ai déjà intégrée à mon application, mais je suis bloqué.
Ce que je souhaite, c'est que mes images soient accessibles via une URL vers l'un de mes contrôleurs, par exemple :
http://railsapp.com/images/obfuscated?member_id=1234&pic_id=7890
Si l'utilisateur clique avec le bouton droit de la souris sur l'image affichée sur le site web et sélectionne "Copier l'adresse", puis la colle, il s'agira de la MÊME URL (c'est-à-dire qu'elle ne trahira pas l'endroit où l'image est hébergée).
L'image réelle se trouve sur une URL comme celle-ci :
http://s3.amazonaws.com/s3username/assets/member_id/pic_id.extension
Est-ce possible ? Peut-être en utilisant la fonction render
méthode ? Ou autre chose ? Je sais qu'il est possible pour PHP de renvoyer les bons en-têtes pour faire croire au navigateur qu'il s'agit d'une image, mais je ne sais pas comment faire cela dans Rails...
MISE À JOUR : Je veux que tous les utilisateurs de l'application puissent voir les images si et SEULEMENT s'ils sont actuellement connectés au site. Si l'utilisateur n'a pas de session active sur le site, l'accès direct aux images doit produire une image générique ou un message d'erreur.