1

アプリケーションの登録フォームにキャプチャを挿入しようとしています。私が見つけたほとんどの解決策(ambethia/recaptchaおよびachiu/Rack-recaptcha)は、コントローラーヘルパーメソッドを使用してキャプチャが有効かどうかを確認しています。それは素晴らしいことですが、私は単純な認証にOmniAuth-identityを使用していますが、これはコントローラーを提供しません。ユーザーの登録フォームはOmniAuthハンドラーに直接投稿します。

      = form_tag "/auth/identity/register", id: 'loginform' do 
        = error_messages_for @identity, :header_message => "" 

        %table
          %tr{colspan: 2} 
            %td
              = label_tag :title
              = text_field_tag :title, @identity.try(:title), size: '32'
          %tr
            %td
              = label_tag :first_name, nil, class: 'required'
              = text_field_tag :first_name, @identity.try(:first_name), size: '32'
            %td
              = label_tag :last_name, nil, class: 'required'
              = text_field_tag :last_name, @identity.try(:last_name), size: '32'
          %tr
            %td
              = label_tag :email, nil, class: 'required'
              = email_field_tag :email, @identity.try(:email), size: '32'
            %td
              = label_tag :phone, nil, class: 'required'
              = text_field_tag :phone, @identity.try(:phone), size: '32'
          %tr
            %td
              = label_tag :password, nil, class: 'required'
              = password_field_tag :password, nil, size: '32'
            %td
              = label_tag :password_confirmation, nil, class: 'required'
              = password_field_tag :password_confirmation, nil, size: '32'
          %tr
            %td{colspan: 2} 
              = label_tag 'recaptcha', "Captcha", class: 'required'
              = recaptcha_tags
          %tr
            %td{halign: 'right', colspan: 2} 
              = submit_tag 'Register', class: 'button'

カスタムコントローラーにポストバックしてレジスタパスに到達しようとするまですべてを試しましたが、それは機能しませんでした。これまでに見たどのgemでもモデルの検証はできません(とにかくMVCに違反しています)。 。

私はreCAPTCHAソリューションのいずれにも固執していません。自動登録を妨げるものが必要です。私はここにデバイスを戻し、それで終わりますが、私のチームは以前にそれを取り除いており、何らかの理由でそれを嫌っています。フォームとomniauth-identityの間にコントローラーを挿入して検証できるようにする方法はありますか、それともモデル検証を実行できる別のgemがありますか?

4

1 に答える 1

0

そのため、私が最終的に解決したのは、モデルのログインなどを確認する前に呼び出すメソッドを指定できるカスタムフックをomniauth-identityに追加することでした。これを行う方法を示すプルリクエストが私の組織のクローンにあります。それはエレガントで恐ろしいですが、それはほとんど機能します。

于 2012-05-17T20:48:28.017 に答える