我想在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
答案 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\Request
和MyBundle\Bundle\AuthenticationException
。