2012-08-25 8 views
6

Sto costruendo un'applicazione per flask e desidero che serva alcuni file statici solo se l'utente è autenticato. È un'applicazione a traffico molto basso (solo per uso interno). Come andrei su questo? Una cosa a cui stavo pensando è usare serve_static(), e metterlo dietro un controllo di autenticazione ma che usa la directory statica dalla quale la fiaschetta serve già il contenuto.File statici protetti con il pallone

+0

Vuoi per autentica solo per * alcuni file * statici o vuoi autenticazione per * tutti * statica file (e/o l'intera applicazione)? –

+0

Tutti i file statici. Ho già l'autenticazione sull'app, quindi se posso controllare la sessione attiva per l'app sarebbe perfetta. – marcog

risposta

10

Semplicemente sottoclasse flask.Flask e l'override del metodo send_static_file:

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 

Vedere anche the definition of send_static_file e seguendo

+0

Dolce, funziona! – marcog

+0

Sembra che non ci sia più una linea 857 in quel file. –

+1

@JesseAldridge: ho corretto il collegamento in modo che punti a un commit fisso. Grazie per il testa a testa! –