【问题标题】:Adding Verification only to rails app with Authy, Twillio and Devise使用 Authy、Twilio 和 Devise 仅向 Rails 应用程序添加验证
【发布时间】:2018-04-09 17:09:47
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: ruby-on-rails devise twilio authy


    【解决方案1】:

    将 SMS 验证纳入标准设计流程似乎是一个绝妙的主意,而不是复制功能。幸运的是它很容易:

    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
    

    Devise 让您通过让步“利用”几乎所有控制器方法的流程。 Devise::RegistrationsController#create 在保存资源后生成资源,这是放置 twillio 逻辑的理想位置。

    然后您需要在设计中 permit the additional parameters 和在 customize the form 中添加其他字段。

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

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

    【讨论】:

      猜你喜欢
      • 2012-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-18
      • 1970-01-01
      • 1970-01-01
      • 2022-10-07
      相关资源
      最近更新 更多