我使用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,尝试使用全新配置,并发生同样的错误。
感谢您的帮助!
答案 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
即使在登录后也会继续可用。
如果你不想这样做,你可以做几件事:
FOSUserBundle:Security
controller,并在您登录时重定向到某个地方。