Desidero aggiungere una funzionalità di tipo di abbonamento nella mia domanda per gli utenti titolari di account in modo tale che dopo un intervallo di tempo prestabilito non saranno in grado di accedere al proprio account? Nota: non voglio cancellare il loro account dal database. Ho già installato devise-2.1.2
nella mia applicazione. Qualcuno ha qualche idea su come può essere fatto? Sono novizio a Ruby on rails
quindi sarà molto utile per me se per favore spieghi i passaggi.Come bloccare gli utenti usando Devise?
8
A
risposta
18
Devise ha una soluzione Buil-in con il check :lockable
opzione nel Devise Lockable Documentation
È necessario impostare il set lock_strategy
a :failed_attempts.
Fase 1 Impostare il config/inizializzatori/devise.rb da usare:
# 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
Fase 2 tuo dovrebbe aggiungere il bloccabile a voi modello come questo:
class Example < ActiveRecord::Base
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable,
:lockable
Fase 3 Generare le migrazioni per rendere il lavoro escogitare
class 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
Saluti !!
Desidero chiarire questa cosa nella mia mente che i "tentativi falliti" sono solo per quella situazione se qualche utente ha provato a registrarsi per un certo numero di volte. –
Anche la documentazione dice che una strategia di tipo orario può essere utilizzata per bloccare un account. Quindi voglio dare l'abbonamento ad un utente per pochi mesi dopo di allora non appena l'abbonamento sarà finito, non sarà in grado di usare il suo account. È possibile? –
Si blocca quando l'utente tenta x volte di accedere e può impostare unlock_strategy in tempo. Questo è quello che ti serve! – felipeclopes