Używam Devise do uwierzytelniania w mojej aplikacji.
Jak zabronić niektórym użytkownikom logowania się - rodzaj wyłączenia użytkownika?
ruby-on-rails
devise
Dimitar Vouldjeff
źródło
źródło
Odpowiedzi:
Zrób to tak:
Utwórz kolumnę o nazwie
is_active
dlaUser
modelu.Następnie dodaj poniższy kod do
User
modelu:AKTUALIZACJA
Jak zauważa Matt Huggins, metoda nazywa się teraz
active_for_authentication?
( Dokumentacja )źródło
active_for_authentication?
zamiast tylkoactive?
.the method is now called active_for_authentication?
oznacza, że nazwa metody powinna byćactive_for_authentication?
zamiastactive?
.active_for_authentication?
musi być metodą publiczną!super and self.is_active?
można uprościć dosuper && is_active?
Dodaj kolumnę do
User
modelu:allowed_to_log_in
.Następnie dodaj to do
/app/models/user.rb
:Jeśli chcesz poinformować użytkownika niestandardową wiadomością, możesz również dodać to:
Myślę, że jest to dość ważne, ponieważ standardowa wiadomość od Devise mówi:
Jest to mylące dla użytkowników, a prawdziwym powodem jest to, że „zablokowałeś” im logowanie.
źródło
Chcesz przeprowadzić autoryzację, a nie uwierzytelnianie. Jednak tylko Devise dokonuje uwierzytelnienia.
To znaczy wymyślenie mówi tylko, że użytkownik jest tym, za kogo się podaje.
Potrzebujesz czegoś innego, aby zabronić mu korzystania z witryny.
Autoryzacja to popularny temat i jest cała lista perełek, które mogą Ci w tym pomóc:
http://ruby-toolbox.com/categories/rails_authorization.html
Wybieraj.
źródło
Wygląda na to, że możesz być zainteresowany kankanem
źródło