Zastępowanie obsługi błędów uwierzytelniania - Symfony2
Rozszerzam obsługę błędów uwierzytelniania i wszystko działa dobrze, ale dla jednego małego problemu.
To są moje usługi.yml:
http.utils.class:
class: Symfony\Component\Security\Http\HttpUtils
auth.fail:
class: Acme\MyBundle\AuthenticationFailure
arguments:
- @http_kernel
- @http.utils.class
- []
Ustawiłem to, aby było używane w security.yml:
failure_handler: auth.fail
To jest mój Acme Bundle 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
}
}
Problem polega na tym, że opcje ustawione w security.yml są ignorowane. Wiem, że trzecim parametrem metody _construct klasy jest tablica $ options i nie przekazałem niczego jako trzeciego parametru (w services.yml), więc zgaduję, że jest to problem i rozwiązanie może po prostu przekaż wartości. Zgaduję, że mógłbym również zrobić coś takiego:
arguments:
- @http_kernel
- @http.utils.class
- %security.firewalls.secure_area.form_login%
.... Nie testowałem, ponieważ problem polega na tym, że kodowanie jest trudne w services.yml i nie jest to idealne rozwiązanie, gdybym zmienił nazwę secure_area, która by się zepsuła. Z pewnością te wartości są dostępne w lepszy sposób?