2016-05-13 72 views
0

我正在尝试在我的项目中实施FOSUserBundle。 我刚刚设置了Group功能,创建了一个组并为其添加了一个用户。 真正让我困惑的是用户不像我期望的那样继承组角色。我的期望是,如果用户有一个组,例如角色ROLE_ADMIN,那么该用户也将具有该角色。 因此,像Symfony FOSUserBundle集团目的

if (!$this->get('security.authorization_checker')->isGranted('ROLE_ADMIN')) { 
     throw $this->createAccessDeniedException(); 
    } 

不会抛出异常,但它确实 要我违背什么文档这里

组中的角色说,将要赋予所有用户属于它。

所以我的问题是,我该如何正确使用组? 我是否应该至少容纳一个组中的所有用户,并且从不检查分配给用户的角色,而是检查他们的角色?

回答

1
  • 服务security.context与上述更改一起被弃用。推荐 改用: @security.authorization_checker => isGranted() @security.token_storage => getToken() @security.token_storage => setToken()

所以才:

if($this->isGranted('ROLE_ADMIN')) 

Referre到Symfony的组件:

protected function isGranted($attributes, $object = null) 
    { 
     if (!$this->container->has('security.authorization_checker')) { 
      throw new \LogicException('The SecurityBundle is not registered in your application.'); 
     } 

     return $this->container->get('security.authorization_checker')->isGranted($attributes, $object); 
    } 
+0

谢谢!测试时我犯了一个错误。我没有注销并返回,导致分析器显示我的用户没有分配任何角色。那么现在它完美的作品 – Kable