php – 如何使用Symfony表达式语言在@Security注释中使用类常量?

我正在使用Symfony 3,我已经创建了一个自定义Voter类.

我想使用SensioFrameworkExtraBundle @Security标记访问它.

它有点工作.

如果我执行以下操作,它将完美运行:

/**
 * @Rest\Get("organisation/{id}")
 * @Security("is_granted('OrgAdmin',id)")
 * @param int     $id
 * @param Request $request
 *
 * @return View
 */
public function getorganisationAction($id,Request $request)
{

但是我不喜欢在应用程序中使用魔术字符串的想法,我宁愿使用类常量来进行检查.

像这样的东西:

/**
 * @Rest\Get("organisation/{id}")
 * @Security("is_granted(AppBundle\OrgRoles::ROLE_ADMIN,Request $request)
{

但是当我尝试时,我收到以下错误消息:

Unexpected character \"\\\" around position 20 for expression `is_granted(AppBundle\\OrgRoles::ROLE_ADMIN,id)`.

未转义时,如下:

Unexpected character "\" around position 20 for expression `is_granted(AppBundle\OrgRoles::ROLE_ADMIN,id)`.

所以我很难过.

可以吗?

有关更好的方法的任何建议吗?

您可以使用Expression Language Component中提供的 constant()函数
@Security("is_granted(constant('\\Full\\Namespace\\To\\OrgRoles::ROLE_ADMIN'),id)")

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...