isGranted无法使用自定义角色名称

时间:2019-08-21 05:33:45

标签: symfony

我不使用ROLE_USER之类的本地角色名称。相反,因为使用自定义ACL解决方案,所以我使用的角色名称就像USERADMIN一样。

以本机方式设置角色,Symfony调试工具栏在“安全性令牌”部分下显示此内容:

Roles   

[▼
  "ADMIN"
  "USER"
]

但是现在,如果我使用本机isGranted('ADMIN'),则它总是返回false。 如何解决这个问题?我知道我可以实现自定义权限检查模型(确实可以),但是最好使用默认模型,例如,它也可以在Twig模板(is_granted函数)中使用。

1 个答案:

答案 0 :(得分:2)

这是因为默认投票者仅支持带有前缀ROLE_的角色。请参见\ Symfony \ Component \ Security \ Core \ Authorization \ Voter \ RoleVoter的构造函数。 但是您可以create a new custom voter并自己检查角色。只需对默认RoleVoter进行“复制”,然后省去前缀即可。