controllare l'accesso ai file “statici”: Django
-
08-10-2019 - |
Domanda
Ok, so che servire i file multimediali attraverso Django è un non è raccomandato . Tuttavia, sono in una situazione in cui mi piacerebbe servire i file "statici" usando il controllo di accesso a grana fine attraverso modelli Django.
Esempio : io voglio servire la mia libreria di film a me stesso attraverso il web. Sono spesso in viaggio e mi piacerebbe essere in grado di visualizzare qualsiasi dei miei film ovunque mi trovi, purché abbia accesso a internet. Così ho rip miei DVD, caricarli al mio server e costruire questa semplice applicazione Django, con una certa embeddable lettore video .
Per evitare ripercussioni legali, vorrei garantire che solo gli utenti connessi con le autorizzazioni appropriate (cioè me stesso e le persone che vivono nella stessa economia domestica, che può, come me, di accesso alle reali DVD a loro piacimento) , ma nega ad altri utenti (cioè le persone che hanno postato commenti sul mio blog) e restituisce un HTTP 404.
Ora, servendo questi file direttamente utilizzando Apache e mod_wsgi
è piuttosto fastidioso perché quando una richiesta HTTP per i file multimediali (cioè http://video.mywebsite.com/my-favorite-movie/
) entra in gioco, ho bisogno di convalidare contro il mio database degli utenti che la persona all'altro capo ha il corretto permessi.
Domanda : possono I ottenere questo effetto senza di servire i file multimediali direttamente attraverso una vista Django? Quali sono le opzioni?
Una cosa che ho pensato è quello di scrivere un semplice script che prende un ID di sessione e slug di un video e restituisce un po 'di booleano che indica se l'utente può (o non può) l'accesso al file video. Quindi, in qualche modo richiesta mod_wsgi
per eseguire questo script prima di accedere all'URL richiesto e restituiscono un HTTP 404 se lo script non è riuscita. Tuttavia, non ho la più pallida idea se questo è ancora possibile.
Modifica : inviare messaggi a questa domanda ha chiarito alcune delle mie idee per la ricerca e che ho incontrato di mod_python
file wrapper di estensione . Qualcuno ha abbastanza esperienza con quella di convalidare che si tratta di una soluzione praticabile?
Soluzione
Sì, è possibile collegare in autenticazione di Django da Apache. Vedere questo how-to: