@Security注释的自定义消息

时间:2014-06-20 13:08:57

标签: symfony symfony-security

我试图为我的路线使用@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 个答案:

答案 0 :(得分:10)

一旦我意识到这是不可能的,我就Sensio FrameworkExtra Bundle@Security("has_role('ROLE_USER')",message="You have to be logged in") 提出了这个问题。

此PR允许通过指定消息参数(如

)来自定义显示的消息
{{1}}