2016-06-06 16 views
0

Ich benutze Wardens Rückruf, um bestimmte Daten in Cookie zu speichern. Das ist, was ich habe:Eine Möglichkeit zum Zugriff auf den Auth-Cookie von devise/Warden in einem Callback

//This is in devise.rb 
Warden::Manager.after_authentication do |user, auth, opts| 
     auth.cookies[:signed_in] = 1 
     auth.cookies[:user_role] = user.role 
    end 

Das Problem ist, dass, wenn sich der Benutzer zum ersten Mal in meiner Web-app, dieser Rückruf nicht genannt bekommt. Daher kann ich bestimmte Daten nicht in Cookies speichern und meine Web-App läuft nicht korrekt.

Ich muss eine benutzerdefinierte Funktion im Benutzermodell wie folgt machen, so dass es ausgelöst wird, nachdem Benutzer gemacht wird.

Allerdings weiß ich nicht, wie ich auf den gleichen Cookie zugreifen kann, wie es in Wardens Rückruf war. Gibt es eine Möglichkeit, auf ein Cookie im Modell zuzugreifen? Wenn nicht, sollte ich auf Controller zugreifen? Wenn ja, muss ich ein Modul in einem Controller hinzufügen, um darauf zuzugreifen? Detaillierte Erklärung würde geschätzt werden

Antwort

1

Ich glaube Warden::Manager.after_set_user wird tun, was Sie suchen. Es wird aufgerufen, nachdem ein Benutzer erstellt oder Zeichen in

. Beispiel:

Warden::Manager.after_set_user do |user,auth,opts| 
    # Your code 
end