2012-08-25 19 views
6

Estoy construyendo una aplicación de matraz, y quiero que sirva algunos archivos estáticos solo si el usuario está autenticado. Es una aplicación de poco tráfico (solo para uso interno). ¿Cómo voy a hacer esto? Una cosa en la que estaba pensando es en usar serve_static(), y poner eso detrás de una comprobación de autenticación, pero eso usa el directorio estático del que ya sirve el contenido.Asegure los archivos estáticos con el matraz

+0

¿Quieres auténtica sólo para * ciertos archivos estáticos * o quieres autenticación para * todos * estática archivos (y/o toda la aplicación)? –

+0

Todos los archivos estáticos. Ya tengo la autenticación en la aplicación, así que si puedo verificar la sesión activa de la aplicación sería perfecta. – marcog

Respuesta

10

Simplemente subclase flask.Flask y anular la send_static_file método:

class SecuredStaticFlask(Flask): 
    def send_static_file(self, filename): 
     # Get user from session 
     if user.is_authenticated(): 
      return super(SecuredStaticFlask, self).send_static_file(filename) 
     else: 
      abort(403) 
      # Or 401 (or 404), whatever is most appropriate for your situation 

Véase también the definition of send_static_file y siguiendo

+0

¡Dulce, eso funciona! – marcog

+0

Parece que ya no hay una línea 857 en ese archivo. –

+1

@JesseAldridge: he corregido el enlace para apuntar a una confirmación fija. ¡Gracias por el aviso! –

Cuestiones relacionadas