我正在使用此代码检查我的Symfony应用程序中是否授予了用户权限:
$securityContext = $this->container->get('security.context');
if($securityContext->isGranted('IS_AUTHENTICATED_REMEMBERED') ){
$user = $this->get('security.context')->getToken()->getUser()->getId();
} else {
return $this->render('IelCategoryBundle:Category:home.html.twig');
}
我必须在几乎所有正在编写的CRUD操作中编辑它(编辑,删除,...)。
我觉得自己根本不干嘛(不玩文字;-))。在许多行动中有更好的方法来检查这个吗?
答案 0 :(得分:2)
JMSSecurityExtraBundle提供了@Secure注释,可以在调用控制器/服务方法之前轻松检查某个用户角色。
use JMS\SecurityExtraBundle\Annotation as SecurityExtra;
/** @SecurityExtra\Secure(roles="IS_AUTHENTICATED_REMEMBERED") */
public function yourAction()
{
// ...
}
答案 1 :(得分:0)
最好的选择是依靠Kernel
事件听众:http://symfony.com/doc/current/cookbook/service_container/event_listener.html。
将您的侦听器实现为服务,然后如果$this->user
结果isGranted
,您可以将TRUE
设置为所需的值。稍后,您可以使用以下方法轻松检索控制器中的值:
$myServiceListener->getUser();
另一方面,如果检查失败,您可以轻松地将用户重定向到home.html.twig
。