Documentação do Symfony - versão 3.1
Renderizada do repositório symfony-docs-pt-BR no Github
Ao usar o componente de Segurança, você pode criar firewalls que correspondam a determinadas opções da solicitação. Na maioria dos casos, fazer a comparação com a URL é suficiente, mas em casos especiais é possível ainda restringir a inicialização de um firewall de acordo com outras opções da requisição.
Note
Você pode usar qualquer uma dessas restrições individualmente ou misturá-las em conjunto para obter a configuração de firewall desejada.
Esta é a restrição padrão e restringe um firewall para apenas ser inicializado se a URL da solicitação corresponde ao ``pattern``configurado.
1 2 3 4 5 6 7 8 | # app/config/security.yml
# ...
security:
firewalls:
secured_area:
pattern: ^/admin
# ...
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <!-- app/config/security.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<srv:container xmlns="http://symfony.com/schema/dic/security"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:srv="http://symfony.com/schema/dic/services"
xsi:schemaLocation="http://symfony.com/schema/dic/services
http://symfony.com/schema/dic/services/services-1.0.xsd">
<config>
<!-- ... -->
<firewall name="secured_area" pattern="^/admin">
<!-- ... -->
</firewall>
</config>
</srv:container>
|
1 2 3 4 5 6 7 8 9 10 11 | // app/config/security.php
// ...
$container->loadFromExtension('security', array(
'firewalls' => array(
'secured_area' => array(
'pattern' => '^/admin',
// ...
),
),
));
|
O pattern
é uma expressão regular. Nesse exemplo, o firewall só será
ativado se a URL começa (devido ao caracter regex ^
) com /admin
. Se
a URL não corresponde a esse padrão, o firewall não será ativado e firewalls
posteriores terão a oportunidade de corresponder a esta requisição.
New in version 2.4: O suporte para restringir firewalls de segurança a um host específico foi introduzido no Symfony 2.4.
Se corresponder somente com pattern
não é suficiente, a requisição também pode ser comparada com
host
. Quando a opção de configuração host
é definida, o firewall será restrito a
só inicializar se o host da requisição corresponde com a configuração.
1 2 3 4 5 6 7 8 | # app/config/security.yml
# ...
security:
firewalls:
secured_area:
host: ^admin\.example\.com$
# ...
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <!-- app/config/security.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<srv:container xmlns="http://symfony.com/schema/dic/security"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:srv="http://symfony.com/schema/dic/services"
xsi:schemaLocation="http://symfony.com/schema/dic/services
http://symfony.com/schema/dic/services/services-1.0.xsd">
<config>
<!-- ... -->
<firewall name="secured_area" host="^admin\.example\.com$">
<!-- ... -->
</firewall>
</config>
</srv:container>
|
1 2 3 4 5 6 7 8 9 10 11 | // app/config/security.php
// ...
$container->loadFromExtension('security', array(
'firewalls' => array(
'secured_area' => array(
'host' => '^admin\.example\.com$',
// ...
),
),
));
|
O host
(como o pattern
) é uma expressão regular. Nesse exemplo,
o firewall só será ativado se o host é exatamente igual (devido aos
caracteres regex ^
e $
) ao hostname admin.example.com
.
Se o hostname não corresponder a esse padrão, o firewall não será ativado
e os firewalls subseqüentes terão a oportunidade de corresponder a essa
requisição.