[bottle] basic auth

Django, Flask, Bottle, WSGI, CGI…
Antworten
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Habe mal einen Decorator geschrieben, um mit bottle die Basic Auth nutzen zu können.

bottle-patch(1):
http://paste.pocoo.org/show/198945/
bottle-patch(2):
http://paste.pocoo.org/show/198946/

example:
http://paste.pocoo.org/show/198947/
„Lieber von den Richtigen kritisiert als von den Falschen gelobt werden.“
Gerhard Kocher

http://ms4py.org/
Benutzeravatar
noisefloor
User
Beiträge: 4149
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

habe gerade mal ins Beispiel geschaut - sieht ja schön einfach aus. :-)

Gruß, noisefloor
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Zeilen 6-8 kannst du als ``return user == 'ms4py'`` schreiben. Und nach PEP8 solltest du die Leerzeile zwschen den beiden Importen entfernen. Bei Importen gibt es demnach 3 optionale Abschnitte: 1. standard lib 2. 3rd party Importe 3. lokale Importe. Außerdem kann man die beiden Import Statements doch zu einem Import zusammenfassen: ``from bottle import route, run, need_auth, debug``.
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

derdon hat geschrieben:Zeilen 6-8 kannst du als ``return user == 'ms4py'`` schreiben. Und nach PEP8 solltest du die Leerzeile zwschen den beiden Importen entfernen. Bei Importen gibt es demnach 3 optionale Abschnitte: 1. standard lib 2. 3rd party Importe 3. lokale Importe. Außerdem kann man die beiden Import Statements doch zu einem Import zusammenfassen: ``from bottle import route, run, need_auth, debug``.
Ich hätte eher Kritik zum eigentlichen Code und nicht zum Beispiel erwartet. ;)
Ich könnte auch in Zeile 11 ``lambda x,y: x == 'ms4py'`` schreiben und 5-8 komplett weglassen. ;)
Der Beispiel-Code ist halt nur so auf die Schnelle zur Demonstration entstanden.
„Lieber von den Richtigen kritisiert als von den Falschen gelobt werden.“
Gerhard Kocher

http://ms4py.org/
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

lambdas auf Modulebene finde ich persönlich nicht schön. Aber das ist Geschmackssache.
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

Die Frage ist, ob man den Dekorator nicht um ein user:password dictionary erweitert:

Code: Alles auswählen

users = {'sample':'password'}

@route("/")
@auth_required(users):
def index():
    return ''
Benutzeravatar
snafu
User
Beiträge: 6831
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

ahojnnes hat geschrieben:Die Frage ist, ob man den Dekorator nicht um ein user:password dictionary erweitert
+1
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

Habe mir mal erlaubt deinen Code um die Dictionary Methode zu erweitern und habe gleich mal einen Pull Request an defnull gesendet, wenn das für dich in Ordnung geht?

http://paste.pocoo.org/show/200372/

http://github.com/ahojnnes/bottle
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

ahojnnes hat geschrieben:Habe mir mal erlaubt deinen Code um die Dictionary Methode zu erweitern und habe gleich mal einen Pull Request an defnull gesendet, wenn das für dich in Ordnung geht?

http://paste.pocoo.org/show/200372/

http://github.com/ahojnnes/bottle
Klar, kein Problem.
„Lieber von den Richtigen kritisiert als von den Falschen gelobt werden.“
Gerhard Kocher

http://ms4py.org/
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Mit mod_wsgi funktioniert die Lösung leider nicht, request.auth ist immer leer. Vermutlich werden die Header-Daten nicht richtig geparst.
„Lieber von den Richtigen kritisiert als von den Falschen gelobt werden.“
Gerhard Kocher

http://ms4py.org/
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

mit mod_wsgi funktioniert es sehr wohl, man muss mod_wsgi nur sagen, dass es die AUTH header and die app durchlassen soll…
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

apollo13 hat geschrieben:mit mod_wsgi funktioniert es sehr wohl, man muss mod_wsgi nur sagen, dass es die AUTH header and die app durchlassen soll…
Ah, vielen Dank.
"WSGIPassAuthorization On" löst das Problem.
„Lieber von den Richtigen kritisiert als von den Falschen gelobt werden.“
Gerhard Kocher

http://ms4py.org/
Antworten