Symfony isGranted(“ ROLE_ADMIN”)无法正常工作

时间:2019-08-08 18:36:50

标签: php symfony symfony4 fosoauthserverbundle

我有一个像这样的security.yaml:


        api_documentary:
            pattern:    ^/api/v1/documentary
            fos_oauth:  true
            stateless:  false
            methods: [POST, PUT, DELETE]

        - { path: ^/api/v1/documentary, roles: IS_AUTHENTICATED_ANONYMOUSLY }

我希望防火墙在以下路由^/api/v1/documentary POST, PUT, DELETE上处于打开状态(通过访问令牌访问)

我希望防火墙在GETGET ALL路由上关闭

如果我从上面的methods: []中排除GET,则可以公开访问它们,但是会发生一些奇怪的事情:

isGranted无效,即使用户具有以下角色[ROLE_USER,ROLE_ADMIN],它似乎也没有注意到。

if (!$this->isGranted('ROLE_ADMIN')) {
            return new JsonResponse("Not granted");
        }

如果我添加到api_documentary:

methods: [GET, POST, PUT, DELETE]

isGranted有效,但是GET方法将不再公开。

0 个答案:

没有答案