Я хотел бы реализовать декларативную безопасность с помощью Spring/AOP и аннотаций. Как вы видите в следующем примере кода, у меня есть Ограниченные аннотации с параметром "allowedRoles" для определения того, кому разрешено выполнять рекомендуемый метод.
@Restricted(allowedRoles="jira-administrators")
public void setPassword(...) throws UserMgmtException {
// set password code
...
}
Теперь проблема заключается в том, что в моем совете у меня нет доступа к определенным аннотациям:
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);
}
Метод выше всегда возвращает значение null (вообще не существует аннотаций). Есть ли простое решение?
Я прочитал что-то об использовании агента AspectJ, но я бы предпочел не использовать этот агент.