如何在symfony2和Recaptcha中以登录形式实现Recaptcha应该在三次错误的登录尝试后显示?

时间:2014-01-24 04:42:23

标签: symfony

我一直试图在三次错误的登录尝试后在登录页面上显示recaptcha但是无法得到确切的想法。

当我浏览以下链接时

  1. adding-captcha-to-symfony2-login-page
  2. dynamically-styling-an-fos-userbundle-login-page
  3. reference-security-firewall-form-login
  4. is-there-any-sort-of-pre-login-event-or-similar
  5. 如何不使用任何外部捆绑包。当我在基于symfony2的项目中工作时,但这个登录对我来说有点棘手。

    编辑

    仅供参考,我在bundle中创建了LoginType并更新了security.yml文件。 的 LoginType.php

    class LoginType extends AbstractType
    {
        public function buildForm(FormBuilderInterface $builder, array $options)
        {
            $builder
                ->add('username','text')
                ->add('password','password')
                ->add('recaptcha', 'ewz_recaptcha', array(
                        'attr' => array(
                            'options' => array(
                                'theme' => 'white'
                            )
                        ),
                        'mapped' => false,
                        'constraints'   => array(
                            new True
                        )
                    )
                )
            ;
        }
    
        public function setDefaultOptions(OptionsResolverInterface $resolver)
        {
            $resolver->setDefaults(array(
                'intention' => 'authentication'
            ));
        }
    
        public function getName()
        {
            return 'login';
        }
    }
    

    Security.yml

        username_parameter: "login[username]"
        password_parameter: "login[password]"
        csrf_parameter: "login[_token]"
        csrf_provider: form.csrf_provider
        intention: authentication                 
        check_path:  login_check 
        login_path:  login
    

    我可以在登录表单中看到recaptcha,但在提交过程中没有验证。

    请帮忙!

1 个答案:

答案 0 :(得分:0)

登录时,您需要基本拥有自己的身份验证提供程序,因为表单由特殊的symfony进程处理,其中只考虑用户名和密码。

http://symfony.com/doc/current/cookbook/security/custom_authentication_provider.html