2012-08-25 21 views
6

Buduję aplikację do kolb i chcę, aby przesyłała statyczne pliki tylko wtedy, gdy użytkownik jest uwierzytelniony. Jest to aplikacja o bardzo małym natężeniu ruchu (tylko do użytku wewnętrznego). Jak bym to zrobił? Jedną z rzeczy, o której myślałem było użycie serve_static(), i umieszczenie tego za kontrolą uwierzytelnienia, ale która używa statycznego katalogu, z którego kolba już dostarcza treść.Zabezpiecz statyczne pliki za pomocą kolby

+0

Chcesz autentyczne tylko dla * niektórych * plików statycznych lub chcesz uwierzytelniania * ALL * STATIC pliki (i/lub cała aplikacja)? –

+0

Wszystkie pliki statyczne. Mam już uwierzytelnianie w aplikacji, więc jeśli mogę sprawdzić w stosunku do aktywnej sesji dla aplikacji, która byłaby idealna. – marcog

Odpowiedz

10

prostu podklasy flask.Flask i zastąpić metodę 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 

Zobacz również the definition of send_static_file i po

+0

Słodko, to działa! – marcog

+0

Wygląda na to, że w tym pliku nie ma już linii 857. –

+1

@JesseAldridge - Poprawiłem link, aby wskazywać na stałe zatwierdzenie. Dzięki za heads up! –

Powiązane problemy