【发布时间】:2014-11-03 21:24:14
【问题描述】:
我需要检查登录用户是否在系统上具有某些角色,以便我允许或不允许某些操作。我正在使用 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,我看到的唯一文字是“请勿输入”,这是完全错误的。在here 中解释的示例代码中,作者使用了$securityContext var,但它来自哪里?这个 var 是在哪里定义的?我假设它将指向SecurityContext,但我不太确定,我的代码问题出在哪里?如何检查用户是否具有特定角色并因此允许其执行某些代码?
【问题讨论】:
-
你为什么不直接使用
->isGranted('ROLE_ADMIN')? -
怎么样?能否请您写一小段代码来理解它?
标签: php symfony security-context