Symfony2 - 尝试设置服务以扩展类

时间:2013-07-07 19:12:08

标签: php symfony

我想在Symfony2中扩展DefaultAuthenticationFailureHandler。

我不想替换它,只需将其扩展即可。

我基本上想要挂接失败处理程序,所以如果满足条件而不是像失败处理程序那样重定向,我可以执行不同的操作。

我想我需要将此作为一项服务。

我在services.yml

中有这个
extend.auth.fail:
    class: MyBundle\Bundle\AuthenticationFailure

在security.yml中:

security:

    firewalls:

        secure_area:
            pattern: ^/admin
            form_login:
                login_path: login
                check_path: login_check
                failure_handler: extend.auth.fail

在AuthenticationFailure.php中

namespace Symfony\Component\Security\Http\Authentication;

class AuthenticationFailure extends DefaultAuthenticationFailureHandler
{

    public function onAuthenticationFailure(Request $request, AuthenticationException $exception)
    {

        //do something here instead

    }

}

...但是我收到了这个错误:

FatalErrorException: Compile Error: Declaration of Symfony\Component\Security\Http\Authentication\AuthenticationFailure::onAuthenticationFailure() must be compatible with that of Symfony\Component\Security\Http\Authentication\AuthenticationFailureHandlerInterface::onAuthenticationFailure() in /var/symfony/src/MyBundle/Bundle/AuthenticationFailure.php line 18

1 个答案:

答案 0 :(得分:1)

错误的命名空间

名称空间Symfony\Component\Security\Http\Authentication在您的扩展类中应为MyBundle\Bundle

缺少使用语句

确保在扩展类中有Request和AuthenticationException的use语句。

use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Security\Core\Exception\AuthenticationException;

否则php会查找不存在且不兼容的类MyBundle\Bundle\RequestMyBundle\Bundle\AuthenticationException