[pyar] Proteger AngularJS static files con Django

Ariel Camino arielcamino en gmail.com
Mie Feb 25 14:35:32 ART 2015


El 25 de febrero de 2015, 14:26, Francisco Estevez <fran5estevez en outlook.com
> escribió:

>  Buen día,
>
> Les comento mi problema a ver si me pueden dar su opinión:
>
> Tengo una API REST hecha en Djangorestframework, que tiene una
> autenticación básica para algunos endpoints ya funcionando.
>
> La misma sirve como backend de datos a una aplicación web AngularJS.
>
> Al cliente se le occurrió como requerimiento quiere que los templates que
> usa AngularJS esten protegidos con la misma autenticacion de la API.
> Es decir, que por ejemplo, los templates de AngularJS para el login puedan
> sean accedidos sin restricción, y que los templates para otras vistas
> internas sólo sean accedidos si ya iniciamos sesión contra la API.
> Actualmente al código de la app AngularJS lo tenemos alojado en el
> directorio /static/ del proyecto Django.
>
> Buscando un poco, encontré que podria hacer otro directorio para servir
> archivos estaticos, por ejemplo /secret/, que requiera autenticación,
> viendo esto:
>
> https://docs.djangoproject.com/en/1.7/howto/deployment/wsgi/apache-auth/
>
> Lo pude hacer andar, loguea con los mismos usuarios de Django, pero al
> ingresar sale el típico prompt de user/password de apache, es decir, no usa
> la cookie sessionid que ya inicié con AngularJS para autenticarse.
>
> También estuve viendo que los templates de Django comparten símbolos con
> los templates Angular, y digamos que habría que cambiar el funcionamiento
> de alguno de los 2 para que sean compatible ponerlo atrás de una view o
> usar el tag  ^% verbatim % de Django.
>
> En fin, en mi opinión, todo este trabajo no tendría sentido. O sea,
> ocultar algunos de los templates de AngularJS atrás de una view de Django o
> con otro medio, ya que el sistema permite un free sign in a cualquiera que
> tenga un email válido.
>
> A ustedes que les parece? Directamente lo descarto al pedido?
>
> Saludos y muchas gracias!
>
> Francisco.
>
>
Me parece que el pedido no tiene mucho sentido por eso último que decís
(que puede registrase cualquiera).

Dado que los archivos son chiquitos (los templates), lo que podes hacer es
una vista común de django con autenticación (que usa la cookie), y en vez
de devolver un response HTML, devolver el template.

Creo que esto te puede llegar a servir:

http://django-downloadview.readthedocs.org/en/1.6/index.html

sino fijate que hay muchos hacks de ese estilo dando vuelta (sin necesidad
de usar un servidor de archivos estáticos), seguro que se puede hacer, pero
hay que buscar lo más elegante.

Suerte!
-- 
Ariel Camino
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20150225/c0102e56/attachment.html>


More information about the pyar mailing list