【问题标题】:Custom message for @Security annotation@Security 注释的自定义消息
【发布时间】: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 注释?

【问题讨论】:

    标签: symfony symfony-security


    【解决方案1】:

    一旦我意识到这是不可能的,我就向Sensio FrameworkExtra Bundle 发送了pull request 以使这成为可能。

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

    @Security("has_role('ROLE_USER')",message="You have to be logged in")
    

    【讨论】:

    • 那你为什么要关闭 PR?这是一个很好的,关闭后仍然收到支持。请考虑重新打开它。
    • 嗯,实际上是因为一年过去了,没有任何维护者发表评论,但是 PR 不同步,我看不出维护它的目的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-21
    • 2015-07-29
    • 2015-02-01
    • 2015-10-28
    • 2018-04-03
    • 2018-06-08
    • 1970-01-01
    相关资源
    最近更新 更多