Метод getFirewallConfig
Метод getFirewallConfig класса Security возвращает объект
FirewallConfig, который содержит настройки активного
брандмауэра (firewall) для текущего запроса. Первым параметром
передаётся объект Request, для которого нужно получить
конфигурацию. Если для запроса не найден подходящий брандмауэр,
метод возвращает null. Метод удобен, когда нужно узнать
имя активного брандмауэра, список провайдеров пользователей,
включён ли вход по форме или другие параметры безопасности.
Синтаксис
public function getFirewallConfig(Request $request): ?FirewallConfig
Пример
Давайте получим конфигурацию брандмауэра для текущего запроса и выведем имя активного брандмауэра:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentSecurityCoreSecurity;
use SymfonyComponentRoutingAttributeRoute;
class SecurityController extends AbstractController
{
#[Route('/security/firewall', name: 'security_firewall')]
public function firewall(Request $request, Security $security): Response
{
$config = $security->getFirewallConfig($request);
if ($config === null) {
return new Response('no firewall');
}
return new Response($config->getName());
}
}
?>
Результат выполнения кода для адреса /security/firewall:
"main"
Пример
Давайте проверим, включён ли для активного брандмауэра вход по форме, и выведем список провайдеров пользователей:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentSecurityCoreSecurity;
use SymfonyComponentRoutingAttributeRoute;
class SecurityController extends AbstractController
{
#[Route('/security/form-login', name: 'security_form_login')]
public function formLogin(Request $request, Security $security): Response
{
$config = $security->getFirewallConfig($request);
if ($config === null) {
return new Response('no firewall');
}
$enabled = $config->isFormLoginEnabled() ? 'yes' : 'no';
$providers = $config->getProvider();
return new Response($enabled . ' ' . $providers);
}
}
?>
Результат выполнения кода для адреса /security/form-login:
"yes users"