私はFosUserBundle
とEWZRecaptchaBunde
を使用しています。 ログインフォームを上書きして、recaptchaフィールドを追加しました。すべてが機能しています。FOSUserログインフォーム内のReCaptchaを検証してください
問題は、ログインフォームの検証でreCaptchaフィールドが考慮されず、ユーザーが正しいログイン名とパスワードを入力した場合、ログに記録されることです。
私はキャプチャが有効であるかどうかが、私の 事前ログインが延びlistener
であるかどうかをテストする必要があり
事前ログインイベントの並べ替えを行った
UsernamePasswordFormAuthenticationListener
と私は本当にどのように知りません。キャプチャ値を取得します。
これは私の事前ログイン彼らはusername
とpassword
値を取得するには、この$username = $request->get($this->options['username'], null, true);
ようなものを使用UsernamePasswordFormAuthenticationListener
でリスナー
protected function attemptAuthentication(Request $request)
{
// ...
// I only have added this (return null everytime)
$captcha = $request->get($this->options['recaptcha'], null, true);
if ($captcha && true !== $captcha) {
throw new BadCredentialsException('Invalid captcha.');
}
// ...
}
で、他のものを上書きattemptAuthentication
方法です。これは、の値を_username
または_password
という名前(これはリスナーコンストラクタで定義されています)から取得します。
私は、キャプチャ値を見つけるために、他のフィールドと同じ方法で試みたが、キャプチャフィールドはiframe
内側とdiv
なので、それが何かを見つけることができなかったので、私はnull
毎回得ます。
このcaptchaから返された値を取得するにはどうすればいいですか(trueまたはfalse、私は新しいreCaptchaを使用しています)? 私はこの価値を見いだすためにどうすればよいのか、これがもちろん可能なのかどうかはわかりません。
ログインフォームでのキャプチャ検証を許可するのは良い方法ではないかもしれません。
私を助けてくれてありがとう。
バンドルは、captchaがOKかどうかをチェックするバリデータを与えます。このバリデータは、Captchaフィールドに 'IsTrue'制約を置くと他のフォームで使用されます。しかし、このバリデータはログインフォームでは使用されません。あなたのメソッドは、このカスタムバリデータで使用できますか? –
あなたはあなたと一緒に作業する必要があるものを注入することができます – nix9