2017-06-03 4 views
0

Ich habe eine Website mit statischen Elementen wie Bildern. Ich wollte sie schützen (damit Sie nicht direkt über einen Hotlink darauf zugreifen können). Zu diesem Zweck ich die Rolle „Authentifizierung mit mod_wsgi“ aus der Django Dokumentation verwendet: Authentication with mod_wsgiSynchronisieren Apache Logout mit Django Logout

Ich weiß nicht, wie die Tatsache, dass der Benutzer zweimal (einmal Django Auth anmelden muss und dann Apache Auth, wenn es ein Bild auf der Seite) aber es ist nicht das Hauptproblem (wenn Sie wissen, wie man damit umgeht, wäre es auch nett)

Mein Hauptproblem ist, dass ich nach dem Abmelden immer noch auf das geschützte Bild zugreifen kann. Ich weiß, dass das ist, weil die Tatsache, dass Apache nur Djangos check_password Methode verwendet, aber vielleicht gibt es eine Möglichkeit, es zu synchronisieren?

Antwort

1

Sie sollten ‚X-SENDFILE‘ Header einen Blick auf Apache nehmen: https://tn123.org/mod_xsendfile/

Es erlauben Django zu überprüfen, ob Ihre Benutzer es und wenn er zugreifen kann, ist der Zugriff die statische Datei gewährt wird dann von Apache serviert.

Mit dieser Lösung muss sich Ihr Benutzer nicht zweimal anmelden und Sie können jede Art von Kontrolle haben, die Sie wollen!

Ich schrieb eine Blog-Post über sie here mit nginx, aber es auf die gleiche Weise arbeitet :)

+0

sehr vielen Dank! Sieht vielversprechend aus, ich werde es versuchen :)! Also müsste ich nur den nginx Header 'X-Accel-Redirect' in den Apache' X-SENDFILE' Header ändern? – losik123

+0

Genau, 'X-Sendfile' ist die Kopfzeile, die vom Apache-Modul verwendet wird und funktioniert genauso wie für nginx :) – Thom