access_control 在 Symfony3 中不起作用

access_control in Symfony3 doesn't work

我使用 Symfony 3,在 app/config/security.yml.

中使用 access_control 时遇到问题

我安装了 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

没有任何问题,你访问这些路由认证与否是很正常的:

IS_AUTHENTICATED_ANONYMOUSLY: All users (even anonymous ones) have this - this is useful when whitelisting URLs to guarantee access

这是最低级别的角色。

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

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

默认情况下,路由 /login/resetting/register 将在登录后继续可用。

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