Я пытаюсь реализовать модуль :lockable
для своего устройства, следующего за этой вики , но столкнулся с некоторыми проблемами.В процессе разработки, когда вход в систему выполнялся более чем maximum_attempts
раз, атрибут failed_attempts
обновляется правильно, и учетная запись пользователя блокируется, но:
1) несмотря на config.last_attempt_warning = true
предупреждение не отображается
2) Я получаю unlock_instructions
электронное письмо, но когда я копирую и вставляю ссылку в браузер, я получаю ошибку invalid authorisation token
.
config / initializers / devise.rb
# ==> Configuration for :lockable
config.lock_strategy = :failed_attempts
config.unlock_keys = [:email]
config.unlock_strategy = :email
config.maximum_attempts = 3
config.last_attempt_warning = true
models / user.rb
class User < ApplicationRecord
devise :database_authenticatable, :confirmable, :registerable,
:recoverable, :rememberable, :trackable, :validatable, :lockable
end
views / devise / session / new
= flash[:alert] if flash[:alert]
= flash[:notice] if flash[:notice]
= simple_form_for(resource, as: resource_name, url: session_path(resource_name)) do |f|
.form-inputs
= f.input :email, required: false, autofocus: true
= f.input :password, required: false, autocomplete: "off"
= f.input :remember_me, as: :boolean if devise_mapping.rememberable?
.form-actions
= f.button :submit, "Log in"
db / migrate / YYYYMMDDxxx_add_lockable_to_devise.rb
class AddLockableToUsers < ActiveRecord::Migration[5.2]
def change
add_column :users, :failed_attempts, :integer, default: 0, null: false
add_column :users, :unlock_token, :string
add_column :users, :locked_at, :datetime
add_index :users, :unlock_token, unique: true
end
end
У меня нет отложенных миграций, также попытался сбросить базу данных и перезапустить сервер, но безуспешно.Есть идеи, что я делаю не так?Заранее спасибо.