我正在使用 Symfony 3 并且创建了一个自定义 Voter 类。
我想使用访问它SensioFrameworkExtraBundle https://symfony.com/doc/current/bundles/SensioFrameworkExtraBundle/annotations/security.html @Security
tag.
这确实有效。
如果我执行以下操作,它会完美运行:
/**
* @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, id)")
* @param int $id
* @param Request $request
*
* @return View
*/
public function getOrganisationAction($id, 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)`.
所以我对此感到困惑。
能做到吗?
关于更好的方法有什么建议吗?