2016-08-01 30 views
2

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

我安装了FOSUserBundle,我发现当用户扮演角色IS_AUTHENTICATED_ANONYMOUSLY时,routes/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

+0

已经登录默认情况下,路由'/ login','/ resetting'和'/register'即使在登录时也可用。 你说什么错误接收? – NDM

+0

我没有收到任何错误,并且我可以成功登录,但是我仍然可以访问这些路由,并且用户名称显示在带有注销链接的表单上方。换句话说,我可以再次登录... – Jacky

+0

究竟是什么问题?这听起来不像是有什么问题,因为你说你可以访问这些路线时,设置为匿名,这是正确的... –

回答

1

不会有任何问题,这是很正常的,你对这些路线访问被验证过了:

IS_AUTHENTICATED_ANONYMOUSLY:所有用户(甚至是匿名的)有 这一点 - 这在将网址列入白名单以保证访问时很有用

这是最低级别的角色。

但是你可以在你的fonction如果你想被重定向到/admin当你想访问/login被记录

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