1

recaptcha を適切に表示し、前にキャプチャを配置したいフォームを送信することができましたが、recaptcha フォームに何を入力しても検証されます。

ここに私のwtformsクラスがあります:

class MessageForm(Form):
  reason_code = SelectField(u'Reason', [validators.Required(message=(u'A reason for contacting us must be selected.'))], default = -1, choices=[('', ''), ('0', 'Advertising'), ('1', 'Comments/Suggestions'), ('2', 'Support')])
  reply_to = TextField(u'Email address', [validators.Required(message=(u'A reply to email address is required.')), validators.Email(message=(u'A valid reply to email address is required.'))])
  message_body =    TextAreaField(u'Message', [validators.Required(u'You must enter a message to submit this form.')])
  captcha = RecaptchaField(u'Captcha', [validators.Required(u'You must properly fill in the Captcha to submit this form.')], public_key=esp_constants.DEV_RECAPTCHA_PUBLIC_KEY, private_key=esp_constants.DEV_RECAPTCHA_PRIVATE_KEY, secure=True)

私はApp Engineを使用しており、このフォームのハンドラーにはこれがあります

def post(self):
  message_form = MessageForm(self.request.POST, captcha={'ip_address': str(self.request.remote_addr)})

私が見逃しているものがあるかどうか他の誰かが知っていますか?フォームが投稿されると、RecaptchaField にはすべての正しいデータ (つまり、challenge_field など) があるようです。

提案をありがとう。

4

2 に答える 2

2

Flask-WTF は Recaptcha をサポートしているため ( https://flask-wtf.readthedocs.org/en/latest/を参照)、おそらくそれらのコードが役立つかもしれません (特に: https://github.com/lepture/flask- wtf/tree/master/flask_wtf/recaptcha )。

于 2013-12-10T22:13:09.263 に答える
1

WebApp2、Recaptcha、および WTForms の組み合わせを Google App Engine で確実に動作させるために、自分で作成する必要がありました。

これは基本的に、ベースコントローラーで検証メソッドとして処理した方法です

https://gist.github.com/mengelhart/8045030

recaptcha HTML フラグメントは次のようになります。

https://gist.github.com/mengelhart/8045070

recaptcha フィールドの値については、次のような RecaptchaField タイプの代わりに標準の HiddenField を使用しました。

captcha = HiddenField("ReCaptcha")

乾杯

于 2013-12-19T19:51:20.643 に答える