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,只是为了尝试使用新的配置,但出现了同样的错误。
感谢您的帮助!
没有任何问题,你访问这些路由认证与否是很正常的:
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
将在登录后继续可用。
如果你不想这样,你可以做几件事:
- override the
FOSUserBundle:Security
controller,并在您登录后重定向到某个地方。
- override the templates 并且在您已经登录时不显示表单
我使用 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,只是为了尝试使用新的配置,但出现了同样的错误。
感谢您的帮助!
没有任何问题,你访问这些路由认证与否是很正常的:
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
将在登录后继续可用。
如果你不想这样,你可以做几件事:
- override the
FOSUserBundle:Security
controller,并在您登录后重定向到某个地方。 - override the templates 并且在您已经登录时不显示表单