2010-10-16 18 views
3

Ok, je sais que servant des fichiers multimédias via Django est un not recommended. Cependant, je suis dans une situation où je voudrais servir des fichiers "statiques" en utilisant un contrôle d'accès à grain fin à travers les modèles Django.Django: contrôlez l'accès aux fichiers "statiques"

Exemple: Je souhaite diffuser ma bibliothèque de films sur le Web. Je voyage souvent et j'aimerais pouvoir voir n'importe lequel de mes films où que je sois, à condition d'avoir accès à Internet. Donc, je ripper mes DVD, les télécharger sur mon serveur et construire cette application Django simple couplé avec certains embeddable video player. Pour éviter toute répercussion légale, je voudrais m'assurer que seuls les utilisateurs connectés avec les permissions appropriées (ie moi-même et les personnes vivant dans le même foyer, qui peuvent, comme moi, accéder aux vrais DVD à leur convenance), mais refuse à d'autres utilisateurs (personnes qui ont posté des commentaires sur mon blog) et renvoie un HTTP 404.

Maintenant, servant ces fichiers directement en utilisant Apache et mod_wsgi est plutôt gênant, car lorsqu'une requête HTTP pour les fichiers multimédias (c'est-à-dire http://video.mywebsite.com/my-favorite-movie/) entre, j'ai besoin de valider par rapport à ma base de données utilisateur que la personne à l'autre extrémité a les permissions appropriées.

Question: peut j'obtenir cet effet sans au service des fichiers multimédia directement à travers une vue Django? Quelles sont mes options? Une chose à laquelle j'ai pensé est d'écrire un script simple qui prend un identifiant de session et un slug d'une vidéo et renvoie un booléen indiquant si l'utilisateur peut (ou non) accéder au fichier vidéo. Ensuite, demandez d'une manière ou d'une autre mod_wsgi d'exécuter ce script avant d'accéder à l'URL demandée et de renvoyer un message HTTP 404 si le script a échoué. Cependant, je n'ai pas la moindre idée si c'est même possible.

Modifier: l'affichage de cette question précise certaines de mes idées pour la recherche et je suis venu à travers l » file wrapper extensionmod_python. Est-ce que quelqu'un a suffisamment d'expérience pour valider que c'est une solution viable?

Répondre

4

Oui, vous pouvez vous connecter à l'authentification Django depuis Apache. Voir ce how-to:

+1

Nice trouver! Il faudra des mods personnalisés (mineurs) pour fonctionner, mais je pense que c'est mon meilleur pari! –

+0

Le lien n'est plus actif. Est-ce que quelqu'un est au courant de ce fait avec de nouvelles méthodes? –

+1

@AlexStewart: On dirait que la page vient d'être déplacée; J'ai corrigé le lien. Merci! –