controlar el acceso a los archivos “estáticos”: Django
-
08-10-2019 - |
Pregunta
Ok, I saber que servir archivos multimedia a través de Django es un no se recomienda . Sin embargo, estoy en una situación en la que me gustaría servir archivos "estáticos" usando el control de acceso de grano fino a través de modelos de Django.
Ejemplo : Quiero servir a mi biblioteca de la película a mí mismo a través de Internet. menudo estoy de viaje y me gustaría ser capaz de ver cualquiera de mis películas donde quiera que esté, siempre que tenga acceso a Internet. Así rasgar mi DVDs, subirlos a mi servidor y construir esta sencilla aplicación Django, con una cierta integrable reproductor de vídeo .
Para evitar repercusiones legales, me gustaría para asegurar que sólo los usuarios con sesión iniciada con los permisos adecuados (es decir, a mí mismo y las personas que viven en el mismo hogar, que puede, como yo, de acceso a los DVDs reales a su conveniencia) , pero niega a otros usuarios (es decir, personas que han publicado comentarios en mi blog) y devuelve un HTTP 404.
Ahora, sirviendo estos archivos directamente utilizando Apache y mod_wsgi
es bastante problemático porque cuando una solicitud HTTP para los archivos de medios (es decir http://video.mywebsite.com/my-favorite-movie/
) entra en juego, que necesito para validar contra mi base de datos de usuario que la persona en el otro extremo tiene el correcto permisos.
Pregunta ??strong> puede I lograr este efecto sin servicio de los archivos multimedia directamente a través de una vista de Django? ¿Cuáles son mis opciones?
Una cosa que pienso es escribir un script simple que toma un identificador de sesión y babosa de un video y devuelve algún valor booleano que indica si el usuario puede (o no) el acceso al archivo de vídeo. Entonces, de alguna manera solicitud mod_wsgi
para ejecutar este script antes de acceder a la URL solicitada y devuelve un HTTP 404 si el guión no. Sin embargo, no tengo ni idea de si esto es posible.
Editar : envíos a esta pregunta aclaró algunas de mis ideas para la búsqueda y me ha llegado a través de mod_python
archivo de envoltura extensión . ¿Alguien tiene experiencia suficiente con eso para validar que es una solución viable?
Solución
Yes, you can hook into Django's authentication from Apache. See this how-to: