【问题标题】:Symfony 3.4 Custom Authentication ListenerSymfony 3.4 自定义认证监听器
【发布时间】:2018-01-03 11:39:07
【问题描述】:

我已经在 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 正确集成的东西,允许我在登录表单中使用验证码。

谢谢

【问题讨论】:

    标签: login recaptcha symfony3.x


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-09
      • 2015-04-19
      • 2017-02-18
      • 2011-12-24
      相关资源
      最近更新 更多