我有這個role_hierarchy:如何構建角色層次結構中的Symfony
role_hierarchy:
ROLE_USER: [ROLE_EDITOR, ROLE_WEBSITE]
ROLE_ADMIN: ROLE_USER
然後
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: ROLE_ADMIN }
- { path: ^/, role: ROLE_USER }
非註冊用戶應該能夠訪問到登錄頁面, 管理員應該使用註冊頁面(我只希望管理員能夠添加新用戶),註冊用戶(編輯或網站)應該看到主頁(/)
現在,如果我是用戶EDITOR,並且我保護資源與
{% if is_granted('ROLE_WEBSITE') %}
我可以看到資源,但這不是我想要的。其實在剖析器中我可以看到:
Roles [ROLE_EDITOR, ROLE_USER]
Inherited Roles [ROLE_EDITOR, ROLE_WEBSITE]
所以編輯器用戶正在繼承ROLE_WEBSITE角色。我該如何解決這個問題?
感謝 中號
充分security.yml
security:
encoders:
FOS\UserBundle\Model\UserInterface: bcrypt
role_hierarchy:
ROLE_USER: [ROLE_EDITOR, ROLE_WEBSITE]
ROLE_ADMIN: ROLE_USER
providers:
fos_userbundle:
id: fos_user.user_provider.username_email
firewalls:
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_token_generator: security.csrf.token_manager
logout: true
anonymous: true
guard:
authenticators:
- app.token_authenticator
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: ROLE_ADMIN }
- { path: ^/, role: ROLE_USER }
你需要發表您的全'應用程序/配置/ security.yml'的文件給我們看所有角色信息。 –
已更新。謝謝 – user3174311
你使用的是FOSUserBundle嗎? –