1

ここにある Rails recaptcha プラグインを使用しています: http://github.com/ambethia/recaptcha/tree/master

recaptcha.com でアカウントにサインアップし、公開キーと秘密キーを取得しました。サイトは (今のところ) グローバル キーで構成されています。

config/environment.rb環境変数をセットアップします。

ENV['RECAPTCHA_PUBLIC_KEY'] = 'xxxxxxxxxxxxxxxx'
ENV['RECAPTCHA_PRIVATE_KEY'] = 'XXXXXXXXXXXXXXxx'

私の見解では、キャプチャを次のようにレンダリングします。

<%= recaptcha_tags %>

そして、このフォームを処理するコントローラーには、次のものがあります。

unless verify_recaptcha #   <--  always returns false
    flash[:error] = "Your captcha entry was invalid"
    render :action=>'new'
    return
end

私の問題は、verify_recaptchaが常にfalse を返すことです。

単純なものが欠けているに違いありませんが、わかりません。 そして、スマートアレックの返信を受け取る前に、はい、キャプチャボックスに正しい単語を入力しています:)

4

2 に答える 2

5

注意点として、公開鍵と秘密鍵を誤って切り替えていないことを確認してください。それらは違う。

それが正しい可能性をすでに処理しているかどうかはわかりません。その場合、次のようなものが必要になります。

if verify_recaptcha
  @thing.save!
  redirect_to success_path
else
  flash[:error] = "There was an error with the recaptcha code below. Please re-enter the code and click submit." 
  render :action => 'new'
end

そして、使用することを忘れないでください:

<%= recaptcha_tags :ssl => true %>

SSLを使用している場合。

于 2009-07-03T07:10:14.053 に答える
2

入ってrecaptchaプラグインを見ました。関連する部分は次のようになります。

recaptcha = Net::HTTP.post_form URI.parse("http://#{server}/verify"), {
            "privatekey" => private_key,
            "remoteip"   => request.remote_ip,
            "challenge"  => challenge,
            "response"   => response
          }

これはチャレンジとレスポンスを受け取り、レスポンスを返します。生成したチャレンジとレスポンスで試してみたところ、"true\nsuccess". 次のコード行は、次のfalse場合に戻ります。

answer, error = recaptcha.body.split.map { |s| s.chomp }
unless answer == "true"

戻ってきたので"true\nsuccess"、答えは に"true"なり、コードはパスするはずです。

Net::HTTP を使用して直接応答を送信し、どのような応答が得られるかを確認できますか?

于 2009-07-03T06:23:33.857 に答える