Estoy buscando una manera de venderle a alguien una tarjeta en un evento que tendrá un código único que podrán usar más adelante para descargar un archivo (mp3, pdf, etc.) solo una vez y máscara la ubicación verdadera del archivo para que una persona inteligente que descargue el archivo no pueda descargar el archivo más de una vez. Sería bueno alojar el archivo en Amazon S3 para ahorrar en el ancho de banda donde nuestro servidor comparte ubicación.¿Qué es una solución de Django/Python para proporcionar una URL única para que las personas descarguen archivos?
Mi idea para los códigos sería pregenerar los códigos únicos que se imprimirán en las tarjetas y almacenarlos en una base de datos que también podría tener un campo que almacena el número de veces que se descargó el archivo. De esta forma podríamos establecer cuántos intentos le permitiríamos al usuario descargar el archivo.
La parte sobre la que necesito instrucciones es cómo ocultar/enmascarar la ubicación del archivo original para que las personas no puedan robar esa url y luego descargar el archivo tantas veces como lo deseen. He hecho búsquedas en Google y no estoy buscando con las palabras clave correctas o no hay muchas bibliotecas o fragmentos para este tipo de cosas.
Supongo que podría ser capaz de manipular algo utilizando django.views.static.serve
que actúa como una especie de proxy entre el archivo real y el usuario que descarga el archivo. El único inconveniente de este método es que necesitaría usar el servidor web real y no podría almacenar el archivo en Amazon S3.
Cualquier sugerencia o idea es muy apreciada.
Este es el enfoque más básico, pero podría dañar su servidor si sirve muchos de estos archivos, ya que todo el archivo debe transmitirse a través de un subproceso de servidor de Python/Django. –
Sí, no es una solución súper rápida, pero parece que en su situación el rendimiento no va a ser un problema. Él tiene que vender físicamente a cada usuario una tarjeta, por lo que no esperaría en ningún lugar cerca de 100 descargas por día. –