2011-09-14 11 views
6

Chciałbym ustawić zmienną sesji, gdy użytkownik zaloguje się na podstawie określonego pola w tabeli użytkownika. Nie chcę tworzyć niestandardowego kontrolera Devise, jeśli nie muszę. Czy istnieje sposób? Czy będę musiał pójść drogą niestandardowego kontrolera?Ustawianie zmiennej sesji w narzędziu do logowania

Odpowiedz

12

Jest zwrotna after_sign_in_path_for, można dodać go w ApplicationController

protected 

def after_sign_in_path_for(resource) 
    session[:domain_prefix] = current_user.domain_prefix 
    user_path(resource) 
end 

nie zapomnij wrócić na ścieżkę w ostatnim wierszu metody, w przeciwnym razie zwrotna przekieruje żądanie do treści session[:domain_prefix]

+0

Prosi o dodanie nowej zmiennej sesji przy logowaniu na przykład: przechowywanie nazwy użytkownika w sesji. {Mój przykład jest całkowicie bezużyteczny, ale myślę, że to jest to, czego chce} –

+0

Właśnie zredagowałem, aby poprawić treść, thx –

+0

-1 odesłany :) –

5

Co na ten temat:

Pierwszy zasób, na który patrzę, to http://github.com/plataformatec/devise/wiki/How-To:-Redirect-to-a-specific-page-on-successful-sign-in. Sprawdź także kilka pomysłów na How to redirect to a specific page on successful sign up using rails devise gem?.

można zrobić coś takiego:

def after_sign_in_path_for(resource_or_scope) 
    session[:account_type] = current_user.account_type 

end 

można zaimplementować tę metodę w swojej ApplicationController lub w niestandardowych RegistrationsController.

Powiązane problemy