2012-08-25 5 views
6

Ich baue eine Flasche Anwendung, und ich möchte es einige statische Dateien nur liefern, wenn der Benutzer authentifiziert ist. Es ist eine sehr verkehrsschwache Anwendung (nur für den internen Gebrauch). Wie würde ich darüber gehen? Eine Sache, an die ich dachte, ist die Verwendung von serve_static(), und das hinter einer Authentifizierungsüberprüfung, aber die das statische Verzeichnis verwendet, aus dem flash bereits Inhalte bereitstellt.Sichere statische Dateien mit Kolben

+0

Sie auch an authentischen wollen nur für * bestimmte * statische Dateien oder möchten Sie die Authentifizierung für * alle * statische Dateien (und/oder die gesamte Anwendung)? –

+0

Alle statischen Dateien. Ich habe bereits eine Authentifizierung in der App, also wenn ich gegen die aktive Sitzung nach der App schauen kann, wäre das perfekt. – marcog

Antwort

10

Unterklasse einfach flask.Flask und überschreiben die send_static_file Methode:

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 

Siehe auch the definition of send_static_file und folgende

+0

Süß, das funktioniert! – marcog

+0

Es scheint keine Zeile 857 in dieser Datei mehr zu geben. –

+1

@JesseAldridge - Ich habe den Link so festgelegt, dass er auf einen festen Commit verweist. Danke für die Köpfe hoch! –