如何使用security.yml保护Symfony中的路由

时间:2014-06-12 08:19:07

标签: symfony roles

我有一个管理员继承用户角色的地方:

role_hierarchy:
    ROLE_ADMIN:       ROLE_USER
    ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]

...

access_control:

- { path: ^/index, roles: ROLE_USER }
- { path: ^/items, roles: ROLE_USER }
- { path: ^/items/edit$, roles: ROLE_ADMIN }

我正在努力使编辑页面(以及编辑页面的所有内容...即./ items / edit / 1,/ items / edit / 2等)仅供管理员用户访问。

这不起作用,我以用户身份登录,我仍然可以查看编辑页面。

我做错了什么?

编辑:我刚刚想到的其他内容 - 一旦我开始工作,如何在拒绝访问的情况下定义将用户发送到哪个页面?可能是因为它现在不能正常工作,因为我没有指定在用户被拒绝访问页面的情况下该怎么办?

1 个答案:

答案 0 :(得分:1)

$模式中删除^/items/edit并将$添加到^/items模式。像这样:

- { path: ^/items$, roles: ROLE_USER }
- { path: ^/items/edit, roles: ROLE_ADMIN }

最后使用$,您只能完全限制对/items/edit网址的访问,而不是/items/edit/12/items/edit/2 ....