Требование двухфакторной аутентификации Authy с помощью Devise

У меня есть приложение, настроенное для входа в Devise, и я хочу реализовать двухфакторную аутентификацию с помощью Authy/Twilio. Я настроил его так, что если пользователь переходит по пути /enable_authy, он может получить текстовый код для подтверждения своей учетной записи. Я пытаюсь сделать так, чтобы это было обязательным, а не просто бонусом.

Мои маршруты...

 devise_for :users,
   :controllers => { :omniauth_callbacks => "users/omniauth_callbacks"},
   :path_names => {
    :verify_authy => "/verify-token",
    :enable_authy => "/enable_authy",
    :verify_authy_installation => "/verify-installation"
  }

person Beth Knight    schedule 21.05.2017    source источник


Ответы (1)


Евангелист разработчиков Twilio здесь.

С самим жемчугом невозможно заставить пользователя включить двухфакторную аутентификацию. Однако вы можете убедиться в этом сами, добавив before_action в свой ApplicationController. Вам просто нужно проверить, включен ли Authy у вошедшего в систему пользователя, и перенаправить его на /enable_authy, если это не так.

Что-то вроде:

class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception

  before_action :ensure_authy_enabled

  private

  def ensure_authy_enabled
    return if params[:controller] == "devise/devise_authy"
    if current_user and !current_user.authy_enabled?
      redirect_to user_enable_authy_path
    end
  end
end

Вы также можете установить флэш-сообщение, чтобы объяснить, что произошло, или сохранить путь, который пользователь намеревался посетить, чтобы вы могли перенаправить его туда после настройки 2FA.

Дайте мне знать, поможет ли это вообще.

person philnash    schedule 22.05.2017
comment
Я хочу, чтобы он перенаправлял меня на user_enable_authy_path после того, как они нажмут кнопку регистрации (с помощью формы Devise). Как я мог это сделать? - person Beth Knight; 23.05.2017
comment
Это сделало бы это, с дополнительным бонусом, что если бы они щелкнули со страницы включения без включения 2fa, они были бы перенаправлены обратно. Попробуй это и дай мне знать, как у тебя дела. - person philnash; 23.05.2017
comment
Нет, это мешает моему домашнему индексу. Я сделал это дополнительной функцией для пользователей, но было бы здорово, если бы Authy лучше работал с Devise. Спасибо за помощь! - person Beth Knight; 24.05.2017
comment
Как это мешает вашему домашнему индексу? Если вы хотите, чтобы 2FA была обязательной, она должна будет влиять на каждую страницу, которую посещает вошедший в систему пользователь. - person philnash; 24.05.2017