我正在嘗試學習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 }
工作。
你好 - 我的答案是否解決了你的問題? –