Ich verwende Devise zur Authentifizierung in meiner Anwendung.
Wie verbiete ich bestimmten Benutzern, sich anzumelden, um einen Benutzer zu deaktivieren?
Ich verwende Devise zur Authentifizierung in meiner Anwendung.
Wie verbiete ich bestimmten Benutzern, sich anzumelden, um einen Benutzer zu deaktivieren?
Antworten:
Mach es so:
Erstellen Sie eine Spalte is_active
für das User
Modell.
Fügen Sie dann den folgenden Code zum User
Modell hinzu:
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
AKTUALISIEREN
Wie Matt Huggins bemerkt, heißt die Methode jetzt active_for_authentication?
( Dokumentation )
active_for_authentication?
statt nur umbenannt wurde active?
.
the method is now called active_for_authentication?
bedeutet, dass Ihr Methodenname active_for_authentication?
anstelle von sein sollte active?
.
active_for_authentication?
muss eine öffentliche Methode sein!
super and self.is_active?
kann vereinfacht werdensuper && is_active?
Fügen Sie dem User
Modell eine Spalte hinzu : allowed_to_log_in
.
Dann füge dies hinzu zu /app/models/user.rb
:
def active_for_authentication?
super and self.allowed_to_log_in?
end
Wenn Sie den Benutzer mit einer benutzerdefinierten Nachricht informieren möchten, können Sie diese auch hinzufügen:
def inactive_message
"You are not allowed to log in."
end
Ich denke, das ist ziemlich wichtig, weil die Standardnachricht von Devise sagt:
"Dein Benutzerkonto ist noch nicht aktiviert."
Das ist für Benutzer verwirrend und der wahre Grund ist, dass Sie ihnen das Anmelden "verboten" haben.
Sie möchten eine Autorisierung durchführen, keine Authentifizierung. Devise führt jedoch nur eine Authentifizierung durch.
Das heißt, das Gerät sagt Ihnen nur, dass ein Benutzer der ist, von dem er sagt, dass er er ist.
Sie brauchen etwas anderes, um ihm die Nutzung der Website zu verbieten.
Autorisierung ist ein beliebtes Thema und es gibt eine ganze Liste von Edelsteinen, die Ihnen dabei helfen können:
http://ruby-toolbox.com/categories/rails_authorization.html Treffen
Sie Ihre Wahl.
Klingt so, als wären Sie an Cancan interessiert