2012-06-08 5 views
7

Ich möchte verhindern, dass ein Bild eine Verknüpfung hat, wenn ein Benutzer KEINE bestimmte Rolle hat. z.B.Entspricht dem veralteten Attribut <sec: authorize> ifNotGranted

<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> 

jedoch ifNotGranted und ifAllGranted werden nun für den Zugriff Ausdruck veraltet. Ich kann sehen, dass ifAllGranted mit repliziert werden:

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

Aber wie kann ifNotGranted die Zugriffsmethode repliziert werden verwendet? Jede Hilfe würde sehr geschätzt werden.

+0

access = "isFullyAuthenticated() und nicht hasRole ('ROLE_ACCOUNTS')" – Ritesh

+0

@Ritesh Dank der 'isFullyAuthenticated()' könnte sehr nützlich sein für eine andere Seite. Hier ist der Seitenzugriff jedoch nur für eingeloggte Benutzer verfügbar. 'not hasRole ('ROLE_ACCOUNTS') hat es geschafft. – arontoms

Antwort

24

Spel Ausdruck kann mit ! Operator negiert werden:

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

Siehe auch:

2

Im Fall, wenn Sie viele Dateien zu aktualisieren, empfehle ich Verwenden Sie den regulären Express, um

zu suchen und zu ersetzen

finden

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

mit

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

ersetzen und

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

ersetzen mit

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

Hoffnung suchen kann dies s Ave you Zeit