2014-06-20 15 views
6

Sto tentando di utilizzare le annotazioni @Security per i miei percorsi. Come questo:Messaggio personalizzato per l'annotazione @Security

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

Quando la restrizione di protezione spara un'eccezione, ottengo il messaggio Expression "has_role('ROLE_USER')" denied access.

Questo non è accettabile per essere mostrato all'utente finale, quindi sto cercando di trovare un modo per personalizzare il messaggio per l'annotazione.

soluzione semplice è di non usare per @Secutity annotazioni e scrivere il codice come questi:

/** 
* @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(); 
} 

Ma questo è meno conveniente e meno leggibile.

È possibile scrivere un messaggio personalizzato alle annotazioni @Security?

risposta

9

Non appena ho realizzato che ciò non è possibile, ho effettuato un pull request per Sensio FrameworkExtra Bundle per rendere possibile ciò.

Questo PR permette di personalizzare messaggio visualizzato specificando il parametro messaggio come

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

Allora perché si chiude il PR? E 'stato un buon risultato, ancora ricevendo voti positivi dopo la chiusura. Per favore, considera di riaprirlo. –

+1

Beh, in realtà perché un anno è passato senza commenti da parte dei maintainer, ma il PR non è stato sincronizzato e non ho visto alcuno scopo di mantenerlo. – ScayTrase

Problemi correlati