2010-08-25 3 views
9

Ich entwickle eine Rails3-Anwendung mit Devise für die Authentifizierung. Im Verlauf des Workflows werden Daten wie patient_id in der Sitzung gespeichert. Wenn der Benutzer sich jedoch abmeldet, muss die Sitzung gelöscht werden. Ich kann nicht herausfinden, wie Sitzungsdaten zurückgesetzt werden, da Devise die An- und Abmeldung von Benutzern übernimmt und ich nicht die Kontrolle darüber habe.Rails 3 Reset-Sitzung mit Gerät

Wie wird mit dieser Situation umgegangen?

+0

Ich benutze Devise und es sieht so aus, als ob es Sitzungen beim Abmelden automatisch zurücksetzt. Erkenne, dass dies ein älteres, älteres Post-did ist Veränderungsverhalten, seit du die Frage gestellt hast, oder fehlt mir etwas? – Yarin

Antwort

14

überschreiben Devise :: SessionsController wie folgt aus:

class SessionsController < Devise::SessionsController 
    respond_to :html 
    def destroy 
    super 
    reset_session 
    end 
end 

Don Vergessen Sie nicht, die Geräteansichten an die richtige Stelle zu verschieben (Ansichten/Geräte/Sitzungen zu Ansichten/Sitzungen) und ändern Sie die Geräteroute so, dass sie auf Ihren Controller zeigt. Beispiel:

devise_for :users, :controllers => { :sessions => "sessions" } 

Weitere Informationen finden Sie in der Entwicklerdokumentation auf github oder auf dem von Bill veröffentlichten Link.

+0

Danke, die obige Technik sollte funktionieren. Es ist sauberer als das, was ich derzeit als Lösung habe: https://gist.github.com/735857. Dies beweist erneut meine Unfähigkeit, die Dokumente richtig durchzugehen. Ich werde zu Ihrer Lösung bewegen. –

+0

Vielleicht mache ich etwas falsch, aber ich musste einen Benutzer ausloggen und auf eine neue Seite schicken ... also funktionierte nur "reset_session" für mich. – rtfminc