Разработать: блокируется - last_attempt_warning не отображается - PullRequest
0 голосов
/ 05 июня 2018

Я пытаюсь реализовать модуль :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

У меня нет отложенных миграций, также попытался сбросить базу данных и перезапустить сервер, но безуспешно.Есть идеи, что я делаю не так?Заранее спасибо.

1 Ответ

0 голосов
/ 06 июня 2018

После многих копаний мне удалось решить обе проблемы:

Предупреждение не отображается

Первая проблема была вызвана конфигурацией:

config/initializers/devise.rb

config.paranoid = true

Если вы посмотрите на модуль разработки :

Если установлен параноидальный режим, выполнитене показывать заблокированное сообщение, так как оно пропускает существование учетной записи.

В зависимости от ваших требований безопасности вы можете либо изменить это значение на false, либо сохранить в секрете электронные письма и не предоставлять обратную связь.Если вы заинтересованы в настройке вашего сообщения при неудачных попытках входа в систему, я настоятельно рекомендую прочитать this .


Неверный токен авторизации

Вторая проблема была вызваная скопировал ссылку прямо из исходного кода письма - поскольку = закодировано как 3D=, ссылка явно взломана.Дальнейшее объяснение здесь .

Надеюсь, это поможет кому-то, если он столкнется с подобными проблемами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...