Symfony 如何为管理员分配额外的角色
在我的网站上,我的管理员有很多角色。 我想限制某些管理员对某个部分的访问,因此我要求在进入之前授予特定的角色。管理员需要分配“角色报告”角色才能访问/REPORT页面 这是我的密码:Symfony 如何为管理员分配额外的角色,symfony,Symfony,在我的网站上,我的管理员有很多角色。 我想限制某些管理员对某个部分的访问,因此我要求在进入之前授予特定的角色。管理员需要分配“角色报告”角色才能访问/REPORT页面 这是我的密码: security: role_hierarchy: ROLE_REPORT : ROLE_USER ROLE_MERCHANT: ROLE_USER ROLE_VIRTUAL_TERMINAL: ROLE_MERCHANT ROLE_ON
security:
role_hierarchy:
ROLE_REPORT : ROLE_USER
ROLE_MERCHANT: ROLE_USER
ROLE_VIRTUAL_TERMINAL: ROLE_MERCHANT
ROLE_ONLINE_CHECKOUT: ROLE_MERCHANT
ROLE_ADMIN: [ROLE_MERCHANT, ROLE_VIRTUAL_TERMINAL, ROLE_ONLINE_CHECKOUT]
ROLE_SUPER_ADMIN: ROLE_ADMIN
access_control:
# Section Report
- { path: /report(.*), roles: ROLE_REPORT}
由于某些原因,我的管理员在授予角色后无法访问该页面。我认为这与角色层次有关
如果我能提供更多信息,请告诉我
谢谢,默认情况下,您需要注销/再次登录才能使新角色生效 然而,还有另一种选择。根据安全参考,有一个选项
总是在授予之前进行身份验证,如果设置为true
,将在每次请求时刷新令牌。Symfony每次都会转到DB刷新角色
通过示例和链接提供了类似的答案您应该添加一个新角色,例如role_ADMIN_REPORT,并通过以下方式修改您的安全性:
security:
role_hierarchy:
ROLE_REPORT : ROLE_USER
ROLE_MERCHANT: ROLE_USER
ROLE_VIRTUAL_TERMINAL: ROLE_MERCHANT
ROLE_ONLINE_CHECKOUT: ROLE_MERCHANT
ROLE_ADMIN: [ROLE_MERCHANT, ROLE_VIRTUAL_TERMINAL, ROLE_ONLINE_CHECKOUT]
ROLE_ADMIN_REPORT: [ROLE_ADMIN, ROLE_REPORT]
ROLE_SUPER_ADMIN: ROLE_ADMIN
access_control:
# Section Report
- { path: /report(.*), roles: ROLE_REPORT}
您是否尝试注销/再次登录?角色不会自动刷新…@jperovic:它可以工作。我觉得发这篇文章很蹩脚。将您的评论作为答案发布,以便我可以接受!