2009-07-02 18 views
1

ich die Schienen recaptcha Plugin bin mit hier: http://github.com/ambethia/recaptcha/tree/masterRails Recaptcha Plugin gibt immer false zurück

Ich habe für ein Konto auf recaptcha.com habe unterschrieben, einen öffentlichen & privaten Schlüssel erhalten, und die Website ist so konfiguriert, mit ein globaler Schlüssel (für jetzt).

In config/environment.rb ich Setup die Umgebungsvariablen:

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

Meiner Ansicht nach machen ich das Captcha wie folgt aus:

<%= recaptcha_tags %> 

Und in meinem Controller Verarbeitung dieser Form ich dieses:

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

Mein Problem ist, dass verify_recaptcha alwa ys gibt false zurück.

Ich muss etwas einfach vermissen, aber ich sehe es nicht. Und bevor ich eine Smart-Alec-Antwort bekomme, JA, ich tippe die richtigen Worte in die Captcha-Box :)

Antwort

5

Nur als eine Anmerkung, stellen Sie sicher, dass Sie nicht versehentlich die öffentlichen und privaten Schlüssel umschalten; Sie sind anders.

Ich kann nicht sagen, ob Sie bereits die Möglichkeit der Handhabung, dass es ist richtig, in dem Fall, dass Sie so etwas haben möchten:

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 

Und denken Sie daran zu nutzen:

<%= recaptcha_tags :ssl => true %> 

Wenn Sie SSL verwenden.

+0

Danke für die Tipps, habe diese Bereiche abgedeckt. –

+0

Ihre Antwort veranlasste mich, meine Schlüssel zu überprüfen, und stellte sich heraus, dass ich ein nachstehendes Zeichen vom privaten Schlüssel verpasst hatte. Vielen Dank! –

2

Ich ging hinein und schaute auf das recaptcha plugin. Der relevante Teil liest etwas wie folgt:

Dies nimmt die Herausforderung und Antwort und gibt eine Antwort zurück. Als ich es mit einer Herausforderung und Antwort versuchte, die ich erzeugte, bekam ich "true\nsuccess". Die folgenden Codezeilen zurückgeben false wenn:

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

Da ich zurück "true\nsuccess" bekam, Antwort "true" sein wird, und der Code sollte daher übergeben.

Können Sie versuchen, die Antwort direkt mit Net :: HTTP zu senden und zu sehen, welche Antwort Sie erhalten?

+0

Danke für den Tipp, stellt sich heraus, dass ich meinen privaten Schlüssel fett gefingert hatte! –

Verwandte Themen