@Security注释的自定义消息

Sca*_*ase 6 symfony symfony-security

我正在尝试@Security为我的路线使用注释.像这样:

/**
 * @return Response
 * @Route("/action")
 * @Security("has_role('ROLE_USER')")
 * @Template()
 */
public function someAction()
{
    return array();
}
Run Code Online (Sandbox Code Playgroud)

当安全限制触发异常时,我收到消息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();
}
Run Code Online (Sandbox Code Playgroud)

但这不太方便,可读性也差.

是否可以将自定义消息写入@Security注释?

Sca*_*ase 10

一旦我意识到这是不可能的,我就提出了拉动请求,Sensio FrameworkExtra Bundle以使其成为可能.

此PR允许通过指定消息参数来自定义显示的消息

@Security("has_role('ROLE_USER')",message="You have to be logged in")
Run Code Online (Sandbox Code Playgroud)