我有一个设置了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"
}
答案 0 :(得分:0)
Twilio开发者传道者在这里。
gem本身无法强制用户启用双因素身份验证。但是,您可以使用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
您可能还想设置一条Flash消息来解释发生了什么,或者存储了用户打算访问的路径,这样您就可以在设置2FA后将其重定向到那里。
让我知道这是否有帮助。