我正在尝试学习Symfony角色和安全性。我现在security.yml文件,如下所示:Symfony角色和安全解释
role_hierarchy:
ROLE_USER: ROLE_DO_ALMOST_NOTHING
ROLE_EDITOR: [ ROLE_USER, ROLE_ALLOWED_TO_EDIT ]
ROLE_CONTRIBUTOR: [ ROLE_EDITOR, ROLE_ALLOWED_TO_CONTRIBUTE ]
ROLE_ADMIN: [ ROLE_CONTRIBUTOR ]
ROLE_SUPER_ADMIN: [ ROLE_ADMIN, ROLE_ALLOWED_TO_DO_ANY_THING ]
access_control:
- { path: ^/admin, roles: ROLE_USER }
- { path: ^/admin/editor, roles: ROLE_ADMIN }
- { path: ^/editor, roles: ROLE_EDITOR }
- { path: ^/contributor, roles: ROLE_CONTRIBUTOR }
- { path: ^/super, roles: ROLE_SUPER_ADMIN }
而且我使用这个设置为我的用户:
providers:
in_memory:
memory:
users:
person:
password: password!
roles: 'ROLE_USER'
admin:
password: password2
roles: 'ROLE_ADMIN'
这里是我的问题。我错过了access_control安全部分,但是,标记为ROLE_ADMIN的角色^/admin/editor
将允许用户访问路由,即使该用户不具有角色ROLE_ADMIN 。我想知道这是否是因为路由本身由与^admin
路由相同的控制器共享?或者做了一个人,看看我的代码出错了,因为用户可以访问我不应该访问的路线。
其他路线:如预期
- { path: ^/editor, roles: ROLE_EDITOR }
- { path: ^/contributor, roles: ROLE_CONTRIBUTOR }
- { path: ^/super, roles: ROLE_SUPER_ADMIN }
工作。
你好 - 我的答案是否解决了你的问题? –