entry_point
許可されていない応答を返すには、ファイアウォールにを定義する必要があります。エントリ ポイントに関する情報は、こちらのドキュメントに記載されています。今後リクエストがあった場合に備えて、ここに段落をコピーします。
ユーザーがまったく認証されていない場合 (つまり、トークン ストレージにトークンがまだない場合)、ファイアウォールのエントリ ポイントが呼び出され、認証プロセスが「開始」されます。エントリ ポイントは、メソッド start() のみを持つ AuthenticationEntryPointInterface を実装する必要があります。このメソッドは、現在の Request オブジェクトと、例外リスナーがトリガーされた例外を受け取ります。メソッドは Response オブジェクトを返す必要があります。これは、たとえば、ログイン フォームを含むページ、または基本 HTTP 認証の場合は、ユーザーにユーザー名とパスワードを入力するように求める WWW-Authenticate ヘッダーを含む応答である可能性があります。
そのためには、サービスとして定義されるクラスを作成する必要があります。
次のようになります。
namespace MyBundle\Service;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Security\Http\EntryPoint\AuthenticationEntryPointInterface;
use Symfony\Component\Security\Core\Exception\AuthenticationException;
class CustomEntryPoint implements AuthenticationEntryPointInterface
{
public function start(Request $request, AuthenticationException $authException = null)
{
$response = new Response("", Response::HTTP_UNAUTHORIZED);
return $response;
}
}
そしてあなたのservices.yml
ファイルで
services:
service.entry_point:
class: MyBundle\Service\CustomEntryPoint
最後に、ファイルのセクションでサービス IDservice.entry_point
をentry_point
オプションに渡します。firewall
security.yml
これでうまくいくはずです。