2012-06-08 23 views
7

Me gustaría evitar que una imagen tenga un enlace si el usuario NO tiene un rol determinado. p.ej.Equivalente al atributo obsoleto <seg: autorizar> 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> 

Sin embargo ifNotGranted y ifAllGranted están ahora utilizar para sustituirla por la expresión de acceso. Puedo ver que ifAllGranted puede ser replicado con:

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

Pero, ¿cómo puede ser replicado ifNotGranted utilizando el método de acceso? Cualquier ayuda sería muy apreciada.

+0

access = "isFullyAuthenticated() y no hasRole ('ROLE_ACCOUNTS')" – Ritesh

+0

@Ritesh Gracias el 'isFullyAuthenticated()' podría ser muy útil para otra página. Aquí, sin embargo, el acceso a la página solo está disponible para los usuarios que han iniciado sesión. 'not hasRole ('ROLE_ACCOUNTS')' hizo el truco. – arontoms

Respuesta

24

expresión SpEL puede ser negado con ! operador:

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

Ver también:

2

En caso si usted tiene muchos archivos para actualizar, recomiendo utilice el expreso regular para buscar y reemplazar

encuentran

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

reemplazar con

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

y la búsqueda

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

reemplazar con

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

Esperamos que esto pueda s ave you time