ログインしたユーザーがシステム上で特定の役割を持っているかどうかを確認する必要があるため、一部のアクションを許可するかどうかを確認します。私は JMSSecurityExtraBundle を使用しており、ドキュメントでExpression Based Authorizationを確認していますが、コードが機能していないため、何か問題があります。このコードを見てください:
use JMS\SecurityExtraBundle\Annotation\Secure;
use JMS\SecurityExtraBundle\Security\Authorization\Expression\Expression;
if ($this->get('security.context')->isGranted(array(new Expression('hasRole("ROLE_ADMIN")')))) {
echo "Enter";
} else {
echo "Do not enter";
}
しかし、すべての権限を持ち、ROLE_ADMIN を持つ ADMIN としてログインするたびに、「入力しないでください」というテキストだけが表示されますが、これは完全に間違っています。ここで説明するサンプルコードでは、作成者は$securityContext
var を使用していますが、どこから来たのでしょうか? この変数はどこで定義されていますか? SecurityContextを指していると思いますが、よくわかりません。コードのどこに問題がありますか? ユーザーが特定の役割を持っているかどうかを確認して、コードの実行を許可するかどうかを確認するにはどうすればよいですか?