Używam Devise do uwierzytelniania w mojej aplikacji.
Jak zabronić niektórym użytkownikom logowania się - rodzaj wyłączenia użytkownika?
Używam Devise do uwierzytelniania w mojej aplikacji.
Jak zabronić niektórym użytkownikom logowania się - rodzaj wyłączenia użytkownika?
Odpowiedzi:
Zrób to tak:
Utwórz kolumnę o nazwie is_active
dla User
modelu.
Następnie dodaj poniższy kod do User
modelu:
class User < ActiveRecord::Base
#this method is called by devise to check for "active" state of the model
def active_for_authentication?
#remember to call the super
#then put our own check to determine "active" state using
#our own "is_active" column
super and self.is_active?
end
end
AKTUALIZACJA
Jak zauważa Matt Huggins, metoda nazywa się teraz active_for_authentication?
( Dokumentacja )
active_for_authentication?
zamiast tylko active?
.
the method is now called active_for_authentication?
oznacza, że nazwa metody powinna być active_for_authentication?
zamiast active?
.
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
:
def active_for_authentication?
super and self.allowed_to_log_in?
end
Jeśli chcesz poinformować użytkownika niestandardową wiadomością, możesz również dodać to:
def inactive_message
"You are not allowed to log in."
end
Myślę, że jest to dość ważne, ponieważ standardowa wiadomość od Devise mówi:
"Twoje konto nie zostało jeszcze aktywowane."
Jest to mylące dla użytkowników, a prawdziwym powodem jest to, że „zablokowałeś” im logowanie.
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.
Wygląda na to, że możesz być zainteresowany kankanem