2017-10-05 7 views
1

Meine Flask-App liefert hochauflösende Bilder, nachdem sich ein Benutzer angemeldet und bezahlt hat. Die Bilder werden im Verzeichnis /static/img/wall/ gespeichert und heißen wall_001.jpg, wall_002.jpg und so weiter. Ich muss jetzt bei diesem Namensschema bleiben. Die Zahlen fungieren im Grunde als IDs und ich benutze sie in der ganzen App.Umbenennen eines Dateipfads in Flask

Wenn ich das Bild nach der Zahlung anzeigen, verwende ich den direkten Pfad zum Bild <img src="/static/img/wall/wall_001.jpg" alt="Wallpaper">.

Wenn jemand wollte, könnten sie leicht diesen Link in eine neue Registerkarte einfügen und auf wall_002.jpg, wall_003.jpg und so weiter zugreifen.

Gibt es eine Möglichkeit, den Pfad zum Bild umzubenennen, oder den Dateinamen nach dem Rendern des Bildes zu randomisieren nach Zahlung?

Ich verwendete Flask-Resize/Flask-Images als eine Möglichkeit, dieses Problem zu beheben, da sie eine neue Datei erstellen und in einem Cache-Ordner speichern. Aber bin having problems mit diesen Erweiterungen in der Produktion.

Bearbeiten: Dies ist keine doppelte Frage. Es ist ein anderes Szenario. Meine Frage betrifft nicht nur Logins, sondern auch Zahlungen. Daher ist es erforderlich, die ursprünglichen URLs zu randomisieren/umzubenennen/zu maskieren.

+0

Versuchen Hinzufügen Authentifizierung und eine Login-Seite mit. – rocksteady

+0

@rocksteady Ich verwende bereits Flask-Login mit OAuth2 für soziale Netzwerke. Ich bin mir nicht sicher, wie ich den Zugriff auf diese Dateien in '/ static/img/wall/wall_001.jpg' (und so weiter) beschränken kann ... – mapr

Antwort

0

Erstellen Sie einen harten os.link() oder weichen os.symlink() Link zu der Datei dann zeigen Sie diesen Namen an den Kunden. Der Name erzeugt werden könnte zufällig Python zufällig()

 
    import random 
    import string 

    def randomword(length): 
     return ''.join(random.choice(string.lowercase) for i in range(length)) 

-Code ref, user "etw" auf Stackoverflow

+0

Dies ist keine doppelte Frage. Die Frage ist, wie man die Dateisystemstruktur der Werbeanwendung öffentlich verhindern kann. – Michael

Verwandte Themen