Rozszerzam procedurę obsługi błędu uwierzytelniania i wszystko działa w zasadzie poprawnie, ale w przypadku jednego małego problemu.Przesłanianie procedury obsługi niepowodzeń uwierzytelniania - Symfony2
To mój services.yml:
http.utils.class:
class: Symfony\Component\Security\Http\HttpUtils
auth.fail:
class: Acme\MyBundle\AuthenticationFailure
arguments:
- @http_kernel
- @http.utils.class
- []
Mam ustawiony ten należy stosować w security.yml:
failure_handler: auth.fail
To mój 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
}
}
Problem polega na tym, że opcje ustawione w pliku security.yml są ignorowane. Wiem, że trzecim parametrem metody _construct klasy jest tablica opcji $ i nie przekazałem niczego jako trzeciego parametru (w services.yml), więc zgaduję, że to jest problem i rozwiązanie może być po prostu przekazać wartości w Zgaduję mogę też zrobić coś takiego:.
arguments:
- @http_kernel
- @http.utils.class
- %security.firewalls.secure_area.form_login%
.... I nie zostały przetestowane jako problem jest to trudne kodowania, które w services.yml i nie jest to idealne, jak gdybym zmienił nazwę secure_area, która by się zepsuła. Z pewnością te wartości są dostępne w lepszy sposób?