Symfony3中的access_control不起作用

时间:2016-08-01 15:58:57

标签: php security routes fosuserbundle symfony

我使用Symfony 3,在access_control中使用app/config/security.yml时遇到问题。

我安装了FOSUserBundle,我发现当用户拥有角色IS_AUTHENTICATED_ANONYMOUSLY时,路由/ login / resetting和/ register仍然可用。我使用the documentation中解释的基本配置,但它不起作用:

access_control:
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/admin/, role: ROLE_ADMIN }

错误是否有可能来自另一个文件?我花了一个星期的时间寻找答案,但我无法弄清楚问题来自哪里。此外,我尝试从头开始在另一个项目上重新安装Symfony,尝试使用全新配置,并发生同样的错误。

感谢您的帮助!

Screenshot

2 个答案:

答案 0 :(得分:1)

没有任何问题,访问这些路由进行身份验证是非常正常的:

  

IS_AUTHENTICATED_ANONYMOUSLY:所有用户(甚至是匿名用户)都有   这个 - 在将URL列入白名单以保证访问时很有用

这是最低级别的角色。

但是,如果您希望在要访问/admin被记录时被重定向到/login,您可以在管理登录的功能中执行此操作

if ($this->get('security.authorization_checker')->isGranted('ROLE_ADMIN')) {
   return $this->redirect($this->generateUrl('your_route_path_to_admin'));
}

答案 1 :(得分:1)

默认情况下,路线/login/resetting/register即使在登录后也会继续可用。

如果你不想这样做,你可以做几件事: