2011-11-07 9 views
0

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

問題は、この情報をActionInvocationから取得する方法も、ActionContextから取得する方法もわかりません。

これを行うには1つの方法でなければならないと確信しています。もしそうでなければ、うまく動作しないフレームワークとは言えません。

チップはありますか?

答えて

4

必要な情報はから利用可能なActionProxyに含まれています。

プロキシを取得したら、アクション自体(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; 

ただし、実際のロジックを処理する必要があります。

+0

感謝の男、私はActionInvocationとActionContextのほとんどすべてのメソッドを試しましたが、ActionProxyを試してみることさえ考えませんでした。 完全に働いた – Guedes

+0

@Guedes Cool!うん、それは少し埋まっている;)それはあなたがこれのような、しかし、いくつかの楽しいゲームをプレイすることができます。 –

関連する問題