リクエストURIに特定のトークンが含まれているかどうかを確認し、Symfony\Component\Security\Core\Exception\AccessDeniedException
トークンがない場合、またはトークンが間違っている場合。
if(!isset($token) && $token != 'whatever') {
throw new AccessDeniedException('No token given or token is wrong.');
}
しかし、このAccessDeniedException
を使用すると、Symfony2は単にログインページにリダイレクトします。代わりに、専用の403エラーページが必要です(既にapp/Resources/TwigBundle/views/Exceptions/error403.html.twig
ファイル)。
これを達成するために何を変更する必要がありますか? PHP native Exception?を使用する必要がありますか?403エラーコードを渡すようにするにはどうすればよいですか
Symfony2には、単にログインにリダイレクトしない特定の403-Exceptionがありますか?
スローSymfony\Component\HttpKernel\Exception\AccessDeniedHttpException
。
これにより、セキュリティシステムがバイパスされ、403応答が返されます。この応答は、twig例外リスナーによって取得されます。
Symfony 2.6では、次のコントローラーショートカットを使用して、適切な例外をトリガーできます。
return $this->denyAccessUnlessGranted('ROLE_EDIT', $item, 'You cannot edit this item.');