2010-10-12 6 views
0

Par défaut, Django télécharge des images dans le paramètre MEDIA_ROOT, qui est supposé être un répertoire accessible au public.Chargement d'images non publiques

Je ne veux pas que les utilisateurs puissent télécharger des images et avoir ces images immédiatement accessibles. Au lieu de cela, je veux que les images soient téléchargées dans un répertoire tmp non public. Plus tard, un modérateur du site approuvera les images dans django-admin, ce qui les placera dans un répertoire d'images publiques. L'inconvénient est que les modérateurs du site doivent être en mesure d'afficher les images stockées dans le répertoire tmp afin de les approuver. Ces images doivent donc être diffusées depuis le serveur Web, mais ne peuvent pas être accessibles aux utilisateurs qui ne sont pas des modérateurs.

Comment puis-je:

  1. Prolonger ImageField pour stocker des images dans un répertoire autre que MEDIA_ROOT
  2. Protéger les images temporaires afin qu'ils ne sont visibles par les modérateurs du site avant leur approbation?
+0

Doivent-ils être complètement inaccessibles ou tout simplement improbables? En utilisant un hachage, vous pouvez réduire la probabilité que quelqu'un qui n'a pas de lien direct vers l'image le trouve: http://example.com/images/aksljfklafhsdnfksnkaaljkhgkjaflkghafngaklnfv/image.jpg auquel les administrateurs auront un lien, et l'utilisateur n'aura que un lien vers, si approuvé. – OmerGertel

Répondre

0

Re 2: complètement les protéger au niveau de django est impossible, puisque les médias statique est servi par le serveur Web, sans qu'intervienne django. Ce que vous pouvez faire à la place, c'est de créer un répertoire/private/dans votre source multimédia et de le protéger en utilisant des moyens apache normaux - par exemple .htaccess;

Bien que le hachage, qui a été suggéré plus tôt, semble être une meilleure méthode pour moi.