简体   繁体   English

如何覆盖Symfony2登录验证码控制?

[英]How to override Symfony2 Login for captcha control?

First of all; 首先;

Adding Captcha to Symfony2 Login Page 将Captcha添加到Symfony2登录页面

I saw above conversation but this not exactly what i want. 我看到上面的谈话,但这不完全是我想要的。 I just want to check if captcha is false right before authentication. 我只是想在验证之前检查验证码是否为假。

And no, i don't want to use a bundle for this. 不,我不想使用捆绑包。

I need to know, when symfony2 does security login events? 我需要知道,当symfony2执行安全登录事件时?

Diagram: 图:

Login form submit -> check captcha -> check parameters -> do authentication. 登录表单提交 - >检查验证码 - >检查参数 - >进行验证。

Any idea? 任何想法?

I get it work with below. 我得到它与下面的工作。

<?php

namespace CS\UserBundle\Listener;

use Symfony\Component\Security\Core\Exception\BadCredentialsException;
use Symfony\Component\Security\Http\Event\InteractiveLoginEvent;

class LoginListener
{
    public function onSecurityInteractiveLogin(InteractiveLoginEvent $event)
    {
        $request = $event->getRequest();
        $captcha = $request->request->get('captcha');

        if(!empty($captcha) && $captcha !== $request->getSession()->get('captcha')) {
            throw new BadCredentialsException('Doğrulama Kodu Yanlış!');
        }
    }
}

Service (yml) 服务(yml)

services:
  cs_user.login_listener:
      class: CS\UserBundle\Listener\LoginListener
      tags:
          - { name: kernel.event_listener, event: security.interactive_login }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM