Login Symfony 3.4自定义身份验证侦听器

Login Symfony 3.4自定义身份验证侦听器,login,recaptcha,symfony3.x,Login,Recaptcha,Symfony3.x,我已经在Twig中手动实现了一个登录表单,我正在使用Symfony 3.4提供的默认身份验证(基于用户名和密码)。用户存储在数据库中,因此我有一个扩展AdvancedUserInterface的实体。我既不使用FOSUserBundle也不使用form builder。只是一个简单的形式。它确实有效 问题是我想在登录过程中集成GoogleReCAPTCHA。我知道如何检查验证码是否有效,并实现了自定义AuthenticationListener(我们称之为MyAuthenticationList

我已经在Twig中手动实现了一个登录表单,我正在使用Symfony 3.4提供的默认身份验证(基于用户名和密码)。用户存储在数据库中,因此我有一个扩展AdvancedUserInterface的实体。我既不使用FOSUserBundle也不使用form builder。只是一个简单的形式。它确实有效

问题是我想在登录过程中集成GoogleReCAPTCHA。我知道如何检查验证码是否有效,并实现了自定义AuthenticationListener(我们称之为MyAuthenticationListener)

我知道Symfony使用UsernamePasswordFormAuthenticationListener作为默认侦听器。问题是我找不到一种方法将使用的侦听器更改为我已经实现的侦听器

在Symfony2中,似乎只需在config.yml中添加以下行即可:

parameters:
   security.authentication.listener.form.class: 
       MyBundle\EventListener\MyAuthenticationListener
但是,我找不到Symfony3的方法。有什么建议吗? 我还试图为Symfony3找到一个特定的捆绑包,但实际上我找不到任何与Symfony安全性正确集成的东西,从而允许我在登录表单中使用recaptcha


谢谢你

你的问题可以在这里得到回答:

该解决方案基于由SecurityEvents::INTERACTIVE\u LOGIN触发的自定义侦听器。该事件在验证凭据后,但在重定向到security.yml中定义的默认\u目标\u路径之前触发。在这个位置,您可以通过调用带有相应密码的google recaptcha api来验证请求参数g-recaptcha-response

如果验证失败,您可以抛出一个异常,您将被重定向到登录页面