仅使用Authy,Twillio和Devise向rails应用添加验证

时间:2018-04-09 17:09:47

标签: ruby-on-rails devise twilio authy

我正在构建一个带有Rails 5,Ruby 2.4.0的调度应用程序,并希望将Twillio用于SMS Authy(仅用于电话验证)和Devise用于用户身份验证。

我的问题是关注Twillio教程Twillio Authy verification tutroial我是否想为此工作流程创建自定义设计注册控制器,还是创建自定义用户控制器来处理此问题更好?

由于我的应用程序现在是一个"所有者"通过帐户创建操作上的嵌套表单创建一类User。我只是不确定我是否会通过我的帐户控制器点击创建用户的用户控制器..?

这是一个垃圾问题,但我真的失去了这里不知道如何继续。

1 个答案:

答案 0 :(得分:2)

将SMS验证烘焙到标准Devise流程似乎是一个很好的想法,而不是重复功能。幸运的是它非常简单:

class TwillioRegistrationsController < Devise::RegistrationsController

  def create
    super do |user|
      authy = Authy::API.register_user(
        email: user.email,
        cellphone: user.phone_number,
        country_code: user.country_code
      )
      user.update(authy_id: authy.id)
    end
  end

  protected

  def after_sign_up_path_for(resource)
    "users/verify"
  end
end

设计让你&#34;点击&#34;通过屈服进入几乎所有控制器方法的流程。保存后,Devise::RegistrationsController#create会产生资源,这是放置twillio逻辑的最佳位置。

然后您需要设计permit the additional parameterscustomize the form其他字段。

class ApplicationController < ActionController::Base
  def configure_permitted_parameters
     devise_parameter_sanitizer.permit(:sign_up, keys: [:phone_number, :country_code])
  end
end

请注意,您仍需要设置控制器来处理验证,但您可以按照本教程进行操作。