我的acces_control insisde security.yml不起作用。我已经清除缓存而没有任何结果:)
当我阅读documentation时,我发现任何错误......非常,只有ROLE_ADMIN才能访问路径/ user /。角色是正确的,我用
进行了测试{% if is_granted('ROLE_ADMIN') %}
在Twig里面。
安全性: 编码器: FOS \ UserBundle \ Model \ UserInterface:pbkdf2
role_hierarchy:
ROLE_CUSTOMER_REVISION: ROLE_USER
ROLE_CUSTOMER_MANAGER: [ROLE_CUSTOMER_REVISION, ROLE_IOS]
ROLE_CUSTOMER_ADMIN: ROLE_CUSTOMER_MANAGER
ROLE_ADMIN: [ROLE_CUSTOMER_ADMIN]
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/, role: ROLE_USER }
- { path: ^/admin/, role: ROLE_ADMIN }
- { path: ^/user/, role: ROLE_ADMIN }
providers:
fos_userbundle:
id: fos_user.user_provider.username
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_provider: form.csrf_provider
default_target_path: /{locale}/
logout: true
anonymous: true
AM我做错了什么我不明白?
答案 0 :(得分:8)
您必须将acces_control子句从最具体到最一般的排序:
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/, role: ROLE_ADMIN }
- { path: ^/user/, role: ROLE_ADMIN }
- { path: ^/, role: ROLE_USER }
这是因为路由/admin
也匹配^/
模式,因此必须先放置限制模式^/admin/
。