1

我有一个使用 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"
  }
4

1 回答 1

0

Twilio 开发人员布道者在这里。

gem 本身无法强制用户启用两因素身份验证。但是,您可以before_actionApplicationController. 您只需要检查您的登录用户是否启用了 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 后将它们重定向到那里。

让我知道这是否有帮助。

于 2017-05-22T14:26:30.720 回答