0

特定のユーザー権限にアクセスする必要があるアクションがあるので、メソッドアノテーション@RequiredPermissionとインターセプターを作成して、実行されるメソッドにアノテーションがあるかどうか、およびログに記録されたユーザーかどうかを確認しました。許可を得てください。

問題は、ActionInvocationからもActionContextからもこの情報を取得する方法がわからないことです。

それはそれを行うための1つの方法であると確信しています。そうでない場合は、おそらくそれを使用するのに適したフレームワークではないと思います。

ヒントはありますか?

4

1 に答える 1

4

必要な情報は に含まれておりActionProxy、 から入手できますActionInvocation.getProxy()

プロキシを取得すると、アクション自体 ( からActionInvocation) およびメソッド名 ( ActionProxy.getMethod()) に文字列としてアクセスできます。

それ以降は、通常の Java リフレクションになります。

Method method = action.getClass().getDeclaredMethod(actionmethod);
RequiredPermission permission = method.getAnnotation(RequiredPermission.class);
if (sessionUser.inRoles(permission.getRoles()) {
    return invocation.invoke();
}

return Constants.LOGIN_REQUIRED_RESULT;

または、実際のロジックを処理したい場合。

于 2011-11-07T15:42:57.720 に答える