@Security 注释的自定义消息
Posted
技术标签:
【中文标题】@Security 注释的自定义消息【英文标题】:Custom message for @Security annotation 【发布时间】:2014-08-11 06:11:23 【问题描述】:我正在尝试为我的路线使用@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
注释?
【问题讨论】:
【参考方案1】:一旦我意识到这是不可能的,我就向Sensio FrameworkExtra Bundle
发送了pull request 以使这成为可能。
此 PR 允许通过指定消息参数来自定义显示的消息,例如
@Security("has_role('ROLE_USER')",message="You have to be logged in")
【讨论】:
那你为什么要关闭 PR?这是一个很好的,关闭后仍然收到支持。请考虑重新打开它。 嗯,实际上是因为一年过去了,没有任何维护者发表评论,但是 PR 不同步,我看不出维护它的目的。以上是关于@Security 注释的自定义消息的主要内容,如果未能解决你的问题,请参考以下文章