小编Sca*_*ase的帖子

@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注释?

symfony symfony-security

6
推荐指数
1
解决办法
2125
查看次数

标签 统计

symfony ×1

symfony-security ×1