How to Restrict Firewalls to a Request

When using the Security component, firewalls will decide whether they handle a request based on the result of a request matcher: the first firewall matching the request will handle it.

セキュリティ コンポーネントを使用する場合、ファイアウォールは、リクエスト マッチャーの結果に基づいてリクエストを処理するかどうかを決定します。リクエストに最初に一致したファイアウォールがリクエストを処理します。

The last firewall can be configured without any matcher to handle every incoming request.

最後のファイアウォールは、すべての着信要求を処理するマッチャーなしで構成できます。

Restricting by Configuration

Most of the time you don't need to create matchers yourself as Symfony can do it for you based on the firewall configuration.

ほとんどの場合、Symfony がファイアウォールの設定に基づいてマッチャーを作成できるため、自分でマッチャーを作成する必要はありません。

Note

ノート

You can use any of the following restrictions individually or mix them together to get your desired firewall configuration.

次の制限のいずれかを個別に使用するか、それらを組み合わせて使用​​して、目的のファイアウォール構成を取得できます。

Restricting by Path

This is the default restriction and restricts a firewall to only be initialized if the request path matches the configured pattern.

これはデフォルトの制限であり、要求パスが構成されたパターンと一致する場合にのみファイアウォールが初期化されるように制限します。
  • YAML
    YAML
  • XML
    XML
  • PHP
    PHP
1
2
3
4
5
6
7
8
# config/packages/security.yaml

# ...
security:
    firewalls:
        secured_area:
            pattern: ^/admin
            # ...

The pattern is a regular expression. In this example, the firewall will only be activated if the path starts (due to the ^ regex character) with /admin. If the path does not match this pattern, the firewall will not be activated and subsequent firewalls will have the opportunity to be matched for this request.

パターンは正規表現です。この例では、パスが /admin で始まる (^ regex 文字のため) 場合にのみ、ファイアウォールがアクティブになります。パスがこのパターンに一致しない場合、ファイアウォールはアクティブ化されず、後続のファイアウォールがこの要求に一致する機会があります。

Restricting by Host

If matching against the pattern only is not enough, the request can also be matched against host. When the configuration option host is set, the firewall will be restricted to only initialize if the host from the request matches against the configuration.

パターンとの照合だけでは不十分な場合は、リクエストをホストと照合することもできます。構成オプション host が設定されている場合、ファイアウォールは、要求からのホストが構成と一致する場合にのみ初期化するように制限されます。
  • YAML
    YAML
  • XML
    XML
  • PHP
    PHP
1
2
3
4
5
6
7
8
# config/packages/security.yaml

# ...
security:
    firewalls:
        secured_area:
            host: ^admin\.example\.com$
            # ...

The host (like the pattern) is a regular expression. In this example, the firewall will only be activated if the host is equal exactly (due to the ^ and $ regex characters) to the hostname admin.example.com. If the hostname does not match this pattern, the firewall will not be activated and subsequent firewalls will have the opportunity to be matched for this request.

ホスト (パターンと同様) は正規表現です。この例では、ファイアウォールは、ホストがホスト名 admin.example.com と正確に一致する場合 (^ および $ 正規表現文字により) にのみアクティブ化されます。ホスト名がこのパターンと一致しない場合、ファイアウォールはアクティブ化されず、その後ファイアウォールは、この要求に一致する機会があります。

Restricting by HTTP Methods

The configuration option methods restricts the initialization of the firewall to the provided HTTP methods.

構成オプションのメソッドは、ファイアウォールの初期化を提供された HTTP メソッドに制限します。
  • YAML
    YAML
  • XML
    XML
  • PHP
    PHP
1
2
3
4
5
6
7
8
# config/packages/security.yaml

# ...
security:
    firewalls:
        secured_area:
            methods: [GET, POST]
            # ...

In this example, the firewall will only be activated if the HTTP method of the request is either GET or POST. If the method is not in the array of the allowed methods, the firewall will not be activated and subsequent firewalls will again have the opportunity to be matched for this request.

この例では、要求の HTTP メソッドが GET または POST の場合にのみ、ファイアウォールがアクティブになります。メソッドが許可されたメソッドの配列に含まれていない場合、ファイアウォールはアクティブ化されず、後続のファイアウォールがこの要求に一致する機会が再び与えられます。

Restricting by Service

If the above options don't fit your needs you can configure any service implementing RequestMatcherInterface as request_matcher.

上記のオプションがニーズに合わない場合は、RequestMatcherInterface を実装する任意のサービスを request_matcher として構成できます。
  • YAML
    YAML
  • XML
    XML
  • PHP
    PHP
1
2
3
4
5
6
7
8
# config/packages/security.yaml

# ...
security:
    firewalls:
        secured_area:
            request_matcher: App\Security\CustomRequestMatcher
            # ...