Me gustaría implementar seguridad declarativa con Spring/AOP y anotaciones. Como verá en el siguiente ejemplo de código, tengo las anotaciones restringidas con el parámetro "allowedRoles" para definir quién puede ejecutar un método recomendado.Spring AOP: cómo obtener las anotaciones del método asesorado
@Restricted(allowedRoles="jira-administrators")
public void setPassword(...) throws UserMgmtException {
// set password code
...
}
Ahora, el problema es que en mi consejo que no tienen acceso a las anotaciones definidas:
public Object checkPermission(ProceedingJoinPoint pjp) throws Throwable {
Signature signature = pjp.getSignature();
System.out.println("Allowed:" + rolesAllowedForJoinPoint(pjp));
...
}
private Restricted rolesAllowedForJoinPoint(ProceedingJoinPoint thisJoinPoint)
{
MethodSignature methodSignature = (MethodSignature) thisJoinPoint.getSignature();
Method targetMethod = methodSignature.getMethod();
return targetMethod.getAnnotation(Restricted.class);
}
El método anterior siempre devuelve un valor nulo (no hay anotaciones encontradas en absoluto). ¿Hay una solución simple para esto?
He leído algo sobre el uso del agente AspectJ pero preferiría no utilizar este agente.
Muchas gracias, esa fue la razón. – hugri