Если вы используете класс Gatekeeper для проверки подлинности до того, как запрос попадет в брандмауэр, вы можете создать прослушиватель с предварительной проверкой подлинности (т. Е. Проверка подлинности происходит перед брандмауэром), расширив AbstractPreAuthenticatedListener и реализовав getPreAuthenticatedData()
:
class GatekeeperListener extends AbstractPreAuthenticatedListener
{
protected function getPreAuthenticatedData(Request $request)
{
return array(
Gatekeeper::getCurrentUsername(), // username
'', // credentials
);
}
}
Вам нужно будет создать фабрику безопасности, чтобы ввести в систему новый прослушиватель аутентификации. Этот процесс описан в этой статье поваренной книги:
Как создать собственный поставщик аутентификации: The Factory
Ваш security.yml
должен выглядеть примерно так:
security:
factories:
- "%kernel.root_dir%/../src/Acme/DemoBundle/Resources/config/security_factories.yml"
firewalls:
main:
pattern: .
gatekeeper: true