我需要檢查登錄用戶是否在系統上有某些角色,以便我允許或不允許某些操作。我正在使用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";
}
但我登錄的任何時間,甚至ADMIN裏面有所有的權利,並已ROLE_ADMIN,我看到的唯一的文字是「不要進入」,這是完全錯誤的。在here中的示例代碼中,作者使用了一個$securityContext
var,但它來自哪裏?這個var的定義在哪裏?我認爲它會指向SecurityContext,但我不太確定,我的代碼的問題在哪裏?我如何檢查用戶是否具有某種角色,並因此允許它執行某些代碼?
爲什麼不簡單使用' - > isGranted('ROLE_ADMIN')'? – 2014-11-03 21:29:46
那是怎麼回事?你能寫一小段代碼來理解它嗎? – ReynierPM 2014-11-03 21:30:49