首页 文章

Symfony 3.4自定义验证侦听器

提问于
浏览
2

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

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

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

似乎在Symfony2中,它就像在config.yml中添加以下行一样简单:

parameters:
   security.authentication.listener.form.class: 
       MyBundle\EventListener\MyAuthenticationListener

但是,我找不到Symfony3的方法 . 有什么建议?我也尝试为Symfony3找到一个特定的包,但实际上我找不到任何与Symfony Security正确集成的东西,允许我在登录表单中使用recaptcha .

谢谢

1 回答

  • 0

    您的问题可以在这里得到解答:

    https://stackoverflow.com/a/50800993/7408561

    该解决方案基于 SecurityEvents::INTERACTIVE_LOGIN 触发的自定义侦听器 . 在验证凭据之后但在重定向到security.yml中定义的 default_target_path 之前触发该事件 . 在此位置,您可以通过使用相应的密码调用google recaptcha api来验证请求参数 g-recaptcha-response .

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

相关问题