Seite 2 von 2
Re: [bottle] Loginsystem
Verfasst: Freitag 13. August 2010, 10:23
von Sync32
response.set_cookie('mycookie', '12345', secure=True, expires=+500)
Re: [bottle] Loginsystem
Verfasst: Freitag 13. August 2010, 10:33
von BlackJack
@Sync32: Dann sehe ich jetzt das Problem gerade so überhaupt nicht, denn Du verschlüsselst den Cookie nicht, musst ihn also auch nicht entschlüsseln. Das `secure` wirkt sich (vielleicht!) auf die Übertragung aus, aber das passiert transparent.
Es kann sein, dass der Browser Dein Cookie nicht akzeptiert, weil das `expires` in einem falschen Format ist. Laut den Beispielen bei Wikipedia ist das ein Datum.
Re: [bottle] Loginsystem
Verfasst: Freitag 13. August 2010, 11:17
von Sync32
denn Du verschlüsselst den Cookie nicht
Ops! Wie verschlüssel ich den denn?
Also wenn ich secure=True benutze, findet er den Cookie bei der Abfrage nicht mehr.
Wenn ich es weglasse (secure=True), dann funktioniert und findet er alles wunderbar
Re: [bottle] Loginsystem
Verfasst: Samstag 14. August 2010, 08:34
von snafu
Hm, Bottles Philosophie, dem User alle Möglichkeiten offen zu lassen, was Middleware angeht, in Ehren, aber vielleicht macht es schon Sinn, zumindest für so triviale Aktionen wie `bottle.request.environ.get('beaker.session')` einen Alias als Funktion bereitzustellen. So wie ja auch Server-Adapter eingebaut sind, die frei wählbar sind, aber eben erst unter Nutzung ihrer Abhängigkeit anwendbar sind, um wirklich sinnvolles Arbeiten zu ermöglichen. Das macht den Code IMHO eine ganze Ecke schöner und ich denke nicht, dass ein Einsatz in Maßen dem schlanken Charakter des Projekts schaden würde.
Wobei, gut, dann müsste man `SessionMiddleware()` mit sinnvollen Voreinstellungen wohl auch wrappen. Man könnte hier vielleicht quasi auf höchster Ebene `bottle.run()` ein Flag für `beaker_session` oder sowas mitgeben. Nur muss man da sicher aufpassen, dass es nicht zu magisch wird. Naja, trotzdem mal als Denkanstoß.

Re: [bottle] Loginsystem
Verfasst: Samstag 14. August 2010, 11:20
von jbs
snafu hat geschrieben:Hm, Bottles Philosophie, dem User alle Möglichkeiten offen zu lassen, was Middleware angeht, in Ehren, aber vielleicht macht es schon Sinn, zumindest für so triviale Aktionen wie `bottle.request.environ.get('beaker.session')` einen Alias als Funktion bereitzustellen. So wie ja auch Server-Adapter eingebaut sind, die frei wählbar sind, aber eben erst unter Nutzung ihrer Abhängigkeit anwendbar sind, um wirklich sinnvolles Arbeiten zu ermöglichen. Das macht den Code IMHO eine ganze Ecke schöner und ich denke nicht, dass ein Einsatz in Maßen dem schlanken Charakter des Projekts schaden würde.
Wobei, gut, dann müsste man `SessionMiddleware()` mit sinnvollen Voreinstellungen wohl auch wrappen. Man könnte hier vielleicht quasi auf höchster Ebene `bottle.run()` ein Flag für `beaker_session` oder sowas mitgeben. Nur muss man da sicher aufpassen, dass es nicht zu magisch wird. Naja, trotzdem mal als Denkanstoß.

Ich dachte man könnte sowas in ein ext Modul auslagern und dann in etwa folgendes machen:
Code: Alles auswählen
from bottle.ext.session import SessionMiddleware, session
...
@get('/foo')
def foo():
s = bottle.request.session
#oder
s = session()
#oder
@get('/foo')
@session
def foo(s):
...
run(app_wrappers=(partial(SessionMiddleware, config=session_opts),))