|
Hola! :D no sé nada de django, quiero estudiarlo en está semana. Aún así tengo una pregunta que me mata de la curiosidad: ¿es posible crear enlaces temporables para contenido descargable? La idea es básicamente crear un enlace y que luego de un determinado número de descargas del archivo, dicho enlace sea inservible. No busco un ejemplo completo, con ver como crear e invalidar el enlace satisfacería mi curiosidad. Saludos! |
|
La respuesta es sí, se puede, al final es sólo un tema de programación y de controlar las veces que se accede al enlace. La idea es que el archivo no lo sirva directamente el servidor web sinó que pase primero por la aplicación (esto se puede hacer a través de las cabeceras que servidores como ngnix o apache proporcionan) y es la aplicación la que controla si el fichero se puede servir o no. En esta etapa vas incrementando el contador según la política de negocio que requieras, al llegar al máximo sencillamente dejas de autorizar. Ejemplos de la idea: http://djangosnippets.org/snippets/2226/ http://codeghar.wordpress.com/2009/12/31/django-apache-and-x-sendfile-in-debian/ |
|
Solo quiero acotar para el amigo shackra, en Django, las URLs las "unís" a funciones (o clases) de python a través de expresiones regulares; entonces, podría tener entre las urlpatterns:
La idea de la función sería algo como esto:
Así como esta la expresión regular captura cualquier cosa (el punto y el mas), así que podría ser un fragmento de path también. EDITO: Por razones de seguridad, como menciona @monobot, puede ser necesario restringir la descarga del archivo no solo en el numero de veces (como plantea la pregunta) sino quizás en un usuario determinado, por ello agrego el decorador @login_required en la función, es de notar que el decorador es la forma simple, pero bien se podría poner ese trabajo dentro de la función, es decir, seria parte del "código de la política de descarga", porque podria ser necesario tambien que mas de un usuario necesite descargarlo (nuevamente el decorador simple seria @permission_required ) 1
Lo malo de eso @schcriher es que el usuario puede manipular la url para seguir descargando, es decir el control esta del lado del usuario y no del programador.
(04 May '12, 12:31)
monobot
Bueno, solo ponía la idea general que mencionaba @aaloy en un trozo de código, ya que @shackra decía no saber nada de Django. Eso que mencionas @monobot es muy simple usando las herramientas de Django, la forma fácil seria usar un decorador [1] en la función y asunto arreglado, ejemplo: @login_required
(04 May '12, 17:42)
schcriher
|
@shackra, si la respuesta de @aaloy es buena deberías aceptarla.
Oops... estaba dormido, sorry xd