6

@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注釈にカスタム メッセージを書き込むことはできますか?

4

1 に答える 1

10

これが不可能であることに気づいたので、これを可能にするために にプル リクエストを送信しましたSensio FrameworkExtra Bundle

この PR では、次のようなメッセージ パラメータを指定して、表示されるメッセージをカスタマイズできます。

@Security("has_role('ROLE_USER')",message="You have to be logged in")
于 2014-06-20T14:25:04.983 に答える