Ich verwende Devise zur Authentifizierung in meiner Anwendung.
Wie verbiete ich bestimmten Benutzern, sich anzumelden, um einen Benutzer zu deaktivieren?
ruby-on-rails
devise
Dimitar Vouldjeff
quelle
quelle
Antworten:
Mach es so:
Erstellen Sie eine Spalte
is_active
für dasUser
Modell.Fügen Sie dann den folgenden Code zum
User
Modell hinzu:AKTUALISIEREN
Wie Matt Huggins bemerkt, heißt die Methode jetzt
active_for_authentication?
( Dokumentation )quelle
active_for_authentication?
statt nur umbenannt wurdeactive?
.the method is now called active_for_authentication?
bedeutet, dass Ihr Methodennameactive_for_authentication?
anstelle von sein sollteactive?
.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
:Wenn Sie den Benutzer mit einer benutzerdefinierten Nachricht informieren möchten, können Sie diese auch hinzufügen:
Ich denke, das ist ziemlich wichtig, weil die Standardnachricht von Devise sagt:
Das ist für Benutzer verwirrend und der wahre Grund ist, dass Sie ihnen das Anmelden "verboten" haben.
quelle
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.
quelle
Klingt so, als wären Sie an Cancan interessiert
quelle