我试图为我的路线使用@Security
注释。像这样:
/**
* @return Response
* @Route("/action")
* @Security("has_role('ROLE_USER')")
* @Template()
*/
public function someAction()
{
return array();
}
当安全限制触发异常时,我收到消息Expression "has_role('ROLE_USER')" denied access
。
向最终用户显示这是不可接受的,因此我试图找到一种方法来自定义注释消息。
简单的解决方法是不使用@Secutity
注释并编写如下代码:
/**
* @return Response
* @Route("/action")
*
* @Template()
*/
public function someAction()
{
if (!$this->get('security.context')->isGranted('ROLE_USER')) {
throw new AccessDeniedException('You have to be logged in in order to use this feature');
}
return array();
}
但这不方便且不易阅读。
是否可以将自定义消息写入@Security
注释?
答案 0 :(得分:10)
一旦我意识到这是不可能的,我就Sensio FrameworkExtra Bundle
向@Security("has_role('ROLE_USER')",message="You have to be logged in")
提出了这个问题。
此PR允许通过指定消息参数(如
)来自定义显示的消息{{1}}