通过php app/console fos:user:promote xyz ROLE_ADMIN
和php app/console fos:user:promote xyz --super
向用户提升角色ROLE_ADMIN后,数据库中相应的“角色”字段显示:
a:2:{i:0;s:10:"ROLE_ADMIN";i:1;s:16:"ROLE_SUPER_ADMIN";}
两个角色都添加到app/config/security.yml
中,但在以xyz
登录后,我无法访问所需的页面(403)并使用Symfonys工具栏,分析器/安全性显示:Roles [ROLE_USER]
。
其他捆绑相关的任务,如登录/注销,通过电子邮件注册/确认,重置密码等正常工作。如何强制捆绑(或Symfony?)从db读取角色或为什么不读取它们?
我的security.yml:
# app/config/security.yml
安全性: 编码器: FOS \ UserBundle \ Model \ UserInterface:sha512
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: ROLE_ADMIN
providers:
fos_userbundle:
id: fos_user.user_provider.username
firewalls:
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_provider: form.csrf_provider
default_target_path: article_index
logout:
path: /logout
target: article_index
anonymous: true
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/, role: ROLE_ADMIN }
- { path: ^/article/new, role: ROLE_USER }
- { path: ^/article/create, role: ROLE_USER }
- { path: ^/comment/new, role: ROLE_USER }
acl:
connection: default