Expressjs nicht zerstören Sitzung
Ich habe eine Backbone-View sendet ein Ajax-Aufruf an den server zu entfernen, eine Sitzung.
Auf dem server folgende Ereignis ausgelöst:
app.delete('/session', function(req, res) {
if (req.session) {
req.session.destroy(function() {
res.clearCookie('connect.sid', { path: '/' });
res.send('removed session', 200);
});
} else {
res.send('no session assigned', 500);
}
});
Das seltsame daran ist, ich kann drücken Sie den logout-button mehrere Male, ohne immer ein HTTP 500-Fehlercode. Auch chromium zeigt mir, dass ein cookie noch vorhanden ist.
Was mache ich falsch?
Hinsichtlich
BEARBEITEN:
Fand ich heraus, dass dies nicht direkt ein session-Problem, sondern ein cookie.
Ich fügte hinzu, res.clearCookie der route. Leider ist das Verhalten (cookie, session keep alive) hat sich nicht geändert,
EDIT2:
Ich jetzt gab res.clearCookie einige Parameter => res.clearCookie('verbinden.sid', { path: '/' });
Nun, zumindest das cookie ist Weg in den browser. Aber die session scheint immer noch verfügbar.
Oder zumindest die, die ich anrufen kann den logout-route, wie oft ich will, auch erf.Sitzung false sein sollte
EDIT3:
Habe ich jetzt entfernt, alle Sitzungen aus redis und neu gestartet und alles (redis, Knoten, browser).
Als ich wieder eingeloggt und ausgeloggt. Das funktioniert so weit, aber wenn ich reload der Seite mit F5, ich bekomme eine neue session. WARUM?
delete req.session;
Dies hat keine Auswirkung auf die Sitzung zumindest nicht für die nächste Anforderung, da Sie nur lokal entfernen Sie die variable nicht die redis-Taste. req.Sitzung.zerstören entfernt diese auch. Aber siehe update
Sie müssen nicht unbedingt haben, deaktivieren Sie die cookie, die eine Verbindung herstellen, geben Sie eine neue Sitzung in dem Falle eine, die nicht existiert, vielleicht ist es das, was Sie wahrnehmen, als die gleiche session?
Nur eine einfache fahne wie
authenticated: true
senchalabs.org/connect/session.html
InformationsquelleAutor bodokaiser | 2012-07-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Konzentrieren alle Kommentare zusammen, die ich geschrieben habe eine Antwort:
Weil express erzeugt immer eine session und ein cookie für den client haben wir es mit einem anderen Ansatz als nur zu überprüfen, ob es eine Sitzung.
Diese Teile Griffe Anmeldungen
Wurde der login-Teil gehen können, um die logout:
Hoffe, das hilft
InformationsquelleAutor bodokaiser