Ich verwende FosUserBundle
und EWZRecaptchaBunde
. Ich übersteuerte das Login-Formular, um das Recaptcha-Feld hinzuzufügen. Alles funktioniert.Bestätigen ReCaptcha in FOSUser Login-Formular
Das Problem ist, dass die Validierung des Anmeldeformulars das Feld reCaptcha nicht berücksichtigt und der Benutzer ein korrektes Login und Passwort eingibt, wird er protokolliert.
ich eine Art pre Login Ereignis gemacht haben, die prüfen sollten, ob das Captcha gültig ist oder nicht, aber meine pre Login ist ein listener
die UsernamePasswordFormAuthenticationListener
und ich weiß wirklich reicht nicht, wie man Erhalte den Captcha-Wert.
Dies ist die attemptAuthentication
Methode, die andere außer Kraft setzen, in meinem pre Login Zuhörer
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.');
}
// ...
}
Im UsernamePasswordFormAuthenticationListener
sie so etwas wie diese $username = $request->get($this->options['username'], null, true);
verwendet username
und password
Wert zu erhalten. Dies erhält die Werte von input
, die _username
oder _password
Namen haben (diese sind im Listener-Konstruktor definiert).
ich mit dem gleichen Verfahren wie das andere Feld versucht, den Captcha-Wert, aber das Captcha-Feld zu finden, ist ein div
mit einem iframe
nach innen, so dass ich null
jedes Mal, weil es nicht alles finden.
Wie kann ich den Wert erhalten, der von diesem Captcha zurückgegeben wird (richtig oder falsch, verwende ich das neue reCaptcha)? Ich weiß wirklich nicht wie ich tun soll um diesen Wert zu finden und wenn das natürlich möglich ist.
Es ist vielleicht nicht die gute Methode zu tun, um Captcha-Validierung in Login-Form zu ermöglichen.
Vielen Dank für Ihre Hilfe.
Das Bündel gibt einen Validator, der überprüft, ob das Captcha in Ordnung ist oder nicht. Dieser Validator wird in anderen Formularen verwendet, wenn ich die Bedingung 'IsTrue' für das Captcha-Feld festlege. Dieser Validator wird jedoch nicht im Anmeldeformular verwendet. Kann Ihre Methode mit diesem benutzerdefinierten Validator verwendet werden? –
Sie können dort alles injizieren, was Sie brauchen, um damit zu arbeiten – nix9