Ich möchte in meiner Anwendung eine Abonnementfunktion für die Benutzer des Kontoinhabers hinzufügen, so dass sie nach einem festgelegten Zeitraum nicht auf ihr Konto zugreifen können. Hinweis: Ich möchte ihren Account nicht aus der Datenbank löschen. Ich habe bereits devise-2.1.2
in meiner Anwendung installiert. Hat irgendjemand eine Idee, wie kann es gemacht werden? Ich bin Neuling zu Ruby on rails
so wird es sehr hilfreich sein, wenn Sie bitte die Schritte erklären.Wie sperren Benutzer mit Devise?
8
A
Antwort
18
Devise haben eine Buil-in-Lösung mit der :lockable
Option zur Überprüfung der in der Devise Lockable Documentation
Sie haben, um den lock_strategy
Satz :failed_attempts.
Schritt 1 Stellen Sie Ihre config/initializers/devise.rb zu verwenden:
# Defines which strategy will be used to lock an account.
config.lock_strategy = :failed_attempts
# Defines which key will be used when locking and unlocking an account
config.unlock_keys = [ :time ]
# Defines which strategy will be used to unlock an account.
# :time = Re-enables login after a certain amount of time (see :unlock_in below)
config.unlock_strategy = :time
# Number of authentication tries before locking an account if lock_strategy
# is failed attempts.
config.maximum_attempts = 3
# Time interval to unlock the account if :time is enabled as unlock_strategy.
config.unlock_in = 2.hours
Schritt 2 Ihr sollte die abschließbare Sie Modell, da dies hinzufügen:
class Example < ActiveRecord::Base
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable,
:lockable
Schritt 3 die Migrationen Arbeit
machen devise generieren zuclass AddLockableToExamples < ActiveRecord::Migration
def change
add_column :examples, :failed_attempts, :integer, default: 0
add_column :examples, :unlock_token, :string
add_column :examples, :locked_at, :datetime
end
end
Grüße !!
Ich möchte diese Sache in meinem Kopf löschen, dass "gescheiterte Versuche" nur für diese Situation sind, wenn ein Benutzer versucht hat, sich für eine bestimmte Anzahl von Zeiten anzumelden. –
Die Dokumentation besagt auch, dass eine Zeittypstrategie zum Sperren eines Kontos verwendet werden kann. Daher möchte ich einem Benutzer ein Abonnement für einige Monate danach gewähren, sobald das Abonnement vorbei ist, kann er sein Konto nicht benutzen. Ist das möglich? –
Es wird gesperrt, wenn der Benutzer x mal versucht, sich anzumelden, und Sie können die unlock_strategy auf Zeit setzen. Das brauchst du! – felipeclopes