我写了一个自定义选民来检查用户是否是一本书的所有者,他正在尝试编辑。 因此,我使用“@Security”注释来保护Controller:
@Security("is_granted('BookVoter::ATTRIBUTE_OWNER', book)")
这就是我希望@Security注释看起来像,但它只在我编写以下内容时才有效:
@Security("is_granted('OWNER', book)")
我不想“硬编码”'OWNER'字符串,它是我的BookVoter中的常量。 任何想法如何实现这一目标?
问候。
答案 0 :(得分:3)
您传递给@Security
注释的内容是Expression Language。
SensionFrameworkExtraBundle为表达式语言(see here)提供is_granted
函数。
表达式语言默认具有constant()
功能,因此您应该在您的情况下使用它:
@Security("is_granted(constant('\\Full\\Namespace\\To\\BookVoter::ATTRIBUTE_OWNER'), book)")
请注意,您应该使用完整的命名空间表示法。