2011-03-23 20 views
8

¿Es posible construir Meta Annotatations de Spring Security @PreAuthorize como @Component o ?Spring Security Meta Annotation

Lo que quiero hacer es reemplazar @PreAuthorize("hasRole('ADMIN')") por un atajo como @IsAdmin. Pero no encontré ninguna pista en la documentación.

Respuesta

5

Esto funciona, al menos, con la primavera de Seguridad 3.0.2.RELEASE:

@Target(ElementType.METHOD) 
@Retention(RetentionPolicy.RUNTIME) 
@PreAuthorize("hasRole('ADMIN')") 
public @interface IsAdmin 
{ 
} 
+0

He probado varias veces, pero no funciona. El problema parece ser que la nueva anotación 'IsAdmin' no activa un punto de corte de Aspect. – Ralph

+0

Desafortunadamente, ya no tengo el proyecto con el que probé esto (era un antiguo empleador), y no recuerdo los detalles, ya que no trabajo con el software web/Spring Security. ¿Podría ser un problema de configuración? ¿Alguna diferencia de versión? ¿Intentó colocarlo en la interfaz (me parece recordar que al menos con alguna anotación de Spring Security, la única forma en que funcionaría sería colocarla en la interfaz, no en la clase de implementación). – esaj

+0

Uso el AspectJ real como mecanismo de tejido (porque no tengo Interfaces). Puede haber una diferencia entre AspectJ y Spring AOP. Pero, en general, creo que no es posible tener un Pointcut basado en Annotation Meta Definition, porque no sé de una definición de punto de corte que sea compatible con Annotation Meta Definition. – Ralph

Cuestiones relacionadas