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エージェントの使用について何か読んだのですが、このエージェントは使用したくありません。