【问题标题】:Symfony FOSUserBundle Group purposeSymfony FOSUserBundle 组目的
【发布时间】:2016-05-13 09:49:51
【问题描述】:

我正在尝试在我的项目中实现FOSUserBundle。 我刚刚设置了Group 功能,创建了一个组并向其中添加了一个用户。 真正让我感到困惑的是,用户并没有像我预期的那样继承组角色。我的期望是,例如,如果用户有一个角色为 ROLE_ADMIN 的组,那么该用户也将拥有该角色。 所以像

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

不会抛出异常,但确实会 对我来说,这与文档在这里所说的相矛盾

组的角色将授予属于它的所有用户。

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

【问题讨论】:

    标签: symfony security fosuserbundle roles


    【解决方案1】:
    • 服务security.context 与上述更改一起被弃用。受到推崇的 改为使用: @security.authorization_checker => isGranted() @security.token_storage => getToken() @security.token_storage => setToken()

    所以只是:

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

    参考 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);
        }
    

    【讨论】:

    • 谢谢!我在测试时犯了一个错误。我没有注销并重新登录,这导致分析器显示我的用户没有分配任何角色。那么现在它完美地工作了
    猜你喜欢
    • 2018-09-29
    • 2014-07-11
    • 2018-05-30
    • 2016-03-23
    • 1970-01-01
    • 2016-06-02
    • 2018-02-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多