2012-06-08 7 views
7

Vorrei impedire che un'immagine abbia un collegamento se un utente NON ha un determinato ruolo. per esempio.Equivale all'attributo <sec: authorize> ifNotGranted deprecato

<sec:authorize ifNotGranted="ROLE_ACCOUNTS" ><img src="someimage.jpg"/></sec:authorize> 
<sec:authorize ifAllGranted="ROLE_ACCOUNTS" ><a href="somelink.htm"><img src="someimage.jpg"/></a></sec:authorize> 

Tuttavia ifNotGranted e ifAllGranted sono ora abbandonata in favore dell'espressione di accesso. Vedo che ifAllGranted può essere replicata con:

<sec:authorize access="hasRole('ROLE_ACCOUNTS')"><a href="somelink.htm"><img src="someimage.jpg"/></a></sec:authorize> 

Ma come può ifNotGranted essere replicata utilizzando il metodo di accesso? Qualsiasi aiuto sarebbe molto apprezzato.

+0

access = "isFullyAuthenticated() e non hasRole ('ROLE_ACCOUNTS')" – Ritesh

+0

@Ritesh Grazie 'isFullyAuthenticated()' potrebbe essere molto utile per un'altra pagina. Qui tuttavia l'accesso alla pagina è disponibile solo per gli utenti registrati. 'not hasRole ('ROLE_ACCOUNTS')' ha fatto il trucco. – arontoms

risposta

24

SPEL espressione può essere negata con ! operatore:

<sec:authorize access="!hasRole('ROLE_ACCOUNTS')">...</sec:authorize> 

Vedi anche:

2

Nel caso in cui se si dispone di molti file da aggiornare, vi consiglio usa il normale express per cercare e sostituire

trovare

<sec:authorize\s+ifAnyGranted="([^"]+)" 

sostituirli con

<sec:authorize access="hasAnyRole('$1')" 

e la ricerca

<sec:authorize\s+ifNotGranted="([^"]+)" 

sostituirli con

<sec:authorize access="!hasAnyRole('$1')" 

Spero che questo può s ava tempo