2011-08-18 2 views
1

J'ai une application Django où les utilisateurs peuvent télécharger les fichiers qui leur ont été assignés. Comment puis-je être sûr que seul l'utilisateur auquel le fichier est assigné peut télécharger ce fichier? Parce que c'est dans le répertoire des médias, tout le monde peut y naviguer, donc est-il un moyen de laisser seulement l'utilisateur concerné télécharger le fichier?Django, Afficher certains répertoires de médias pour les utilisateurs connectés

Répondre

3

J'ai fait la même chose il y a un an. Je veux que les utilisateurs concernés peuvent télécharger leurs photos:

# urls.py 
(r'^data/photos/(?P<path>.*)$','views.data_access'), 

mon avis 'data_access' donne la photo, ou 403 Page

# view data_access(request, path) 
# [...code...] 
if user_can_download: 
     response = HttpResponse(mimetype="image/jpeg") 
     response['Content-Disposition'] = 'attachment; filename=%s' % unicode(photo.image.name) 
     response['X-Accel-Redirect'] = '/protected/'+ unicode(path) 
     return response 
else: 
    return HttpResponseForbidden() 
+0

Ok attente, mais je peux encore les sourcils juste/médias/etc/etc/photos/et voir les photos, tout utilisateur peut les voir. Je me trompe? – Harry

+0

['return HttpResponseForbidden'] (https://docs.djangoproject.com/en/dev/ref/request-response/#django.http.HttpResponseForbidden) est plus clair que de définir explicitement le' 403'. –

+0

@Harry: Non,/données dans mon projet est le classique/médias. – nicolas

Questions connexes