我有这个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吗? –