Wie lösche ich die Sitzung im Browser?

8

Ich verwende "devise" für die Passwort-Authentifizierung in meiner Ruby on Rails App. Sobald ich mich erfolgreich angemeldet habe und ich meinen Browser geschlossen habe und ein neues Browserfenster geöffnet habe, bin ich immer noch angemeldet. Nehmen wir an, ich verwende Chrome, schließe alle Instanzen von Chrome und öffne dann eine neue. Ich bin immer noch eingeloggt. Dasselbe ist der Fall, wenn ich IE und Firefox auch mache.

Ich würde annehmen, dass beim Schließen des Fensters und beim Öffnen eines neuen Fensters eine neue Sitzung zwischen dem Server und dem Browser eingerichtet werden sollte, nicht wahr? Wenn nicht, wie erreiche ich das?

Ich habe es versucht, indem ich auf den Logout-Button im% c_de% -Ereignis des Browserfensters klicke, aber es funktioniert nicht, wenn ich mich bei einem Formular-Submit oder Link-Klick von der Anwendung abmelde.

%Vor%

und versucht, onbeforeunload request an die Sessions-Controller-Aktion zum Löschen der Sitzung zu senden.

%Vor%

aber das alles hat nicht funktioniert.

    
user380692 30.03.2012, 11:10
quelle

2 Antworten

6

Stellt sich heraus, dass das Problem war, wie mein session_store konfiguriert wurde.

%Vor%

Ich habe die Optionen entfernt und das Problem wurde behoben.

Ich habe jedoch eine andere Frage und das bedeutet, dass das Entfernen von Optionen potentielle Risiken birgt? Ich speichere keine wichtigen Daten in der Sitzung, sondern stelle Daten bereit, die ich nicht offen legen möchte.

Meine App würde in ein paar Tagen online gehen, es wäre sehr hilfreich, eine Antwort dafür zu erhalten. Ich habe ungefähr eine Stunde lang gegoogelt, aber ich hatte nicht viel Glück.

Danke

    
user380692 01.04.2012 05:42
quelle
2

Das ist eigentlich ein Feature. Facebook und so ziemlich alle Websites mit Authentifizierung tun dies durch die Verwendung von Cookies.

Die Option "Rememberable" von Devise verwaltet das Generieren und Löschen eines Tokens für die Erinnerung an den Benutzer aus einem gespeicherten Cookie. Wenn Sie das nicht möchten, entfernen Sie die remember_token -Zeichenfolge und remember_created_at datetime aus Ihrem Benutzermodell und entfernen Sie die Remember Me -Schaltfläche von Ihrer Anmeldeseite.

    
Ashitaka 30.03.2012 11:46
quelle