symfony - isGranted 不适用于自定义角色名称
问题描述
我不使用像ROLE_USER
. 相反,因为使用自定义 ACL 解决方案,我只使用角色名称,例如USER
or ADMIN
。
角色以本机方式设置,Symfony 调试工具栏在 Security Token 部分下显示:
Roles
[▼
"ADMIN"
"USER"
]
但是现在,如果我使用本机isGranted('ADMIN')
,它总是返回 false。如何解决这个问题?我知道我可以实现自定义权限检查模型(并且确实实现了),但使用默认模型会很好,例如,它也适用于 Twig 模板(is_granted
函数)。
解决方案
这是因为默认投票者只支持前缀为 ROLE_ 的角色。参见 \Symfony\Component\Security\Core\Authorization\Voter\RoleVoter 的构造函数。但是您可以创建一个新的自定义选民并自己检查角色。只需制作默认 RoleVoter 的“副本”并将前缀省略即可。
推荐阅读
- python-3.x - 尝试从 python vis office365 发送电子邮件时出现 smtp 错误
- c# - c# webbrowser GetAttribute("onclick") 不起作用
- java - 由于自定义层,TensorFlow Keras 模型无法加载到 Deeplearning4J
- ios - 为什么我的组合未来逻辑在 Button 内部工作,但不在它自己的由 Button 调用的函数内部工作?
- javascript - antlr4中的javascript语法
- c# - 脚本任务引发了运行时错误异常
- python - 在 Mac 上安装 sympy 什么也没做
- r - 在 R 中,如果站点和日期在两个数据框中匹配,则从第一个数据框中提取行值
- python-3.x - 不能用 selenium python “get_attribute”
- setup.py - bdist 使用旧文件创建内置发行版