Я расширяю обработчик ошибок аутентификации, и все работает нормально, но для одной небольшой проблемы.Переопределение обработчика отказа аутентификации - Symfony2
Это мой services.yml:
http.utils.class:
class: Symfony\Component\Security\Http\HttpUtils
auth.fail:
class: Acme\MyBundle\AuthenticationFailure
arguments:
- @http_kernel
- @http.utils.class
- []
Я поставил это использовать в security.yml:
failure_handler: auth.fail
Это мой Acme \ MyBundle \ AuthenticationFailure.php:
namespace Acme\MyBundle;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Security\Core\Exception\AuthenticationException;
use Symfony\Component\Security\Http\Authentication\DefaultAuthenticationFailureHandler;
use Symfony\Component\HttpFoundation\Response;
class AuthenticationFailure extends DefaultAuthenticationFailureHandler
{
public function onAuthenticationFailure(Request $request, AuthenticationException $exception)
{
//do something
}
}
Проблема в том, что параметры, установленные мной в security.yml, игнорируются. Я знаю, что третьим параметром метода _construct этого класса является массив $ options, и я не передал ничего в качестве третьего параметра (в services.yml), поэтому я предполагаю, что это проблема, и решение может будет просто передать значения в Я предполагаю, что я мог бы также сделать что-то вроде этого:.
arguments:
- @http_kernel
- @http.utils.class
- %security.firewalls.secure_area.form_login%
.... Я не проверял, как проблема это жесткое кодирование, что в services.yml и это не идеально, как если бы я изменил имя secure_area, которое он сломал. Разумеется, эти ценности доступны лучше?