Seite 1 von 1

Werkzeug Session korrekt beenden / Cookie löschen

Verfasst: Samstag 21. August 2010, 21:28
von swege
Nachdem ich das Werkzeug Tutorial (URL-Shortener) abgearbeitet (und hoffentlich halbwegs verstanden :)) habe, versuche ich hier und da etwas auszutauschen und hinzuzufügen (statt decorator für views eigene urls.py erstellt, kleinen Blog erstellt). Nun bin ich dabei ein "Login System" zu erstellen, was auch bisher ganz gut funktioniert (ebenfalls aus der Werkzeug Dokumentation geklaut).

Zum Beenden einer Session wurden allerdings nicht viele Worte verloren, das einzige was ich dazu sehe ist:
class werkzeug.contrib.sessions.SessionStore(session_class=None)
...
delete(session)
Delete a session
Entsprechend habe ich meine Anmelde- und Abmeldeviews folgendermaßen gestaltet:

Code: Alles auswählen

def login(request):
    name = error = ''
    if request.method == 'POST':
        user = User.query.filter_by(name=name).first()
        if #formular prüfkrams erfolgreich:
            request.session['uid'] = user.uid
            request.session['name'] = user.name
            return redirect('/')
    return render_template('auth/login.html', name=name, error=error)

def logout(request):
    local.session_store.delete(request.session)
    return redirect('/')
Scheint auch zu funktionieren, beim logout wird die "/tmp/werkzeug_*.sess" Datei gelöscht, aber das Cookie im Browser bleibt besteht. Dadurch erhält der Nutzer bei jedem weiteren Login auch immer die selbe Session ID, ich weiß nicht ob das der Sicherheit der Anwendung gerade zuträglich ist :?.

Ist es nicht weiter schlimm, dass das Cookie weiter besteht? Und wenn doch: Wie beende ich die Session ordnungsgemäß (und lösche das Cookie)?

Re: Werkzeug Session korrekt beenden / Cookie löschen

Verfasst: Sonntag 22. August 2010, 16:05
von jbs
Frag doch mitsuhiko im IRC-Channel direkt.

Re: Werkzeug Session korrekt beenden / Cookie löschen

Verfasst: Sonntag 22. August 2010, 19:06
von mitsuhiko
swege hat geschrieben:Scheint auch zu funktionieren, beim logout wird die "/tmp/werkzeug_*.sess" Datei gelöscht, aber das Cookie im Browser bleibt besteht. Dadurch erhält der Nutzer bei jedem weiteren Login auch immer die selbe Session ID, ich weiß nicht ob das der Sicherheit der Anwendung gerade zuträglich ist :?.
Das sollte kein Problem sein, das Cookie verschwindet by default ja sowieso beim schliessen des Browsers.
Ist es nicht weiter schlimm, dass das Cookie weiter besteht? Und wenn doch: Wie beende ich die Session ordnungsgemäß (und lösche das Cookie)?
Ich lass die Cookies in der Regel leben. Wenn du es loeschen willst kannst du response.delete_cookie('session') machen um es zu entfernen.

Re: Werkzeug Session korrekt beenden / Cookie löschen

Verfasst: Montag 23. August 2010, 07:18
von swege
Vielen Dank für deine Antwort, dann habe ich mir wohl einfach nur zuviele Sorgen gemacht :)
Ich habe mir eben noch angesehen wie es bei ubuntuusers geregelt wird, dort werden scheinbar sowohl beim Login als auch beim Logout direkt hintereinander zwei Session ids vergeben, zuerst eine längere die dann durch eine kürzere ersetzt wird. Hier lesen ja einige Inyokaentwickler mit, würde mich interessieren wie und warum ihr das so umgesetzt habt.
(Übrigens bleibt die Gültigkeitsdauer des Cookies nach einem "Eingeloggt bleiben" bestehen, auch wenn man sich abmeldet und ohne die gesetzt Option wieder anmeldet. Ist das erwünscht? Kann gerade keinen Blick in euer Trac werfen, ubuntuusers ist gerade komplett offline, daher "melde" ich das vorerst hier.)

Re: Werkzeug Session korrekt beenden / Cookie löschen

Verfasst: Dienstag 24. August 2010, 07:52
von mitsuhiko
Ich weis jetzt nicht mehr warum das so implementiert wurde, aber soweit ich weis nutzt das Inyoka zum cookie-probing. Damit kann es dir gleich sagen, ob das mit den Cookies hinhaut oder ob die deaktiviert sind.