我不使用ROLE_USER
之类的本地角色名称。相反,因为使用自定义ACL解决方案,所以我使用的角色名称就像USER
或ADMIN
一样。
以本机方式设置角色,Symfony调试工具栏在“安全性令牌”部分下显示此内容:
Roles
[▼
"ADMIN"
"USER"
]
但是现在,如果我使用本机isGranted('ADMIN')
,则它总是返回false。
如何解决这个问题?我知道我可以实现自定义权限检查模型(确实可以),但是最好使用默认模型,例如,它也可以在Twig模板(is_granted
函数)中使用。
答案 0 :(得分:2)
这是因为默认投票者仅支持带有前缀ROLE_的角色。请参见\ Symfony \ Component \ Security \ Core \ Authorization \ Voter \ RoleVoter的构造函数。 但是您可以create a new custom voter并自己检查角色。只需对默认RoleVoter进行“复制”,然后省去前缀即可。