1

次のようなメソッドシグネチャを持つDWRアクションがあります。

String joinGroup(String groupId, String groupName);

これはDWRAJAXリクエストを介して呼び出され、正常に機能します。

ただし、DWRアクションが呼び出される前に認証作業を行うために、Springインターセプター(ServletFilterのように機能する)を作成しようとしています。
インターセプターは正しく呼び出されていますが、インターセプターのgroupIdおよびgroupNameデータにアクセスする必要があります。

リクエストパラメータマップが空で、デバッガーでリクエスト属性のリスト全体を調べましたが、どこにもデータが表示されません。
リクエストのpostDataもnullです。

firebugを使用すると、データがサーバーに渡されていることがわかります(そして、joinGroupメソッドが最終的に呼び出されたときにそこにあります)。
インターセプターでアクセスできないようです。

アクセスする方法はありますか?

4

2 に答える 2

3

org.directwebremoting.AjaxFilter を使用する

AjaxFilter の doFilter メソッドは、このフィルターが構成されているメソッドに対して Ajax 要求が行われるたびに、DWR によって呼び出されます。このメソッドに渡された AjaxFilterChain により、フィルタはチェーン内の次のエンティティにメソッドの詳細を渡すことができます。

通常、メソッドは次のことを行います。

  1. リクエストを調べる
  2. 必要に応じて、メソッド、オブジェクト、またはパラメーターを変更します
  3. AjaxFilterChain を使用してチェーン内の次のエンティティを呼び出すか、代わりに他のアクションを実行することを決定します。
  4. 必要に応じて、ユーザーに返される値を変更します
  5. 他のアクションを実行します (ログなど)
于 2009-05-28T06:05:09.370 に答える
1

上記のメソッドでのみ呼び出される (構成が正しいことを意味する) MethodInterceptorを使用していると仮定します。

...
@Override
public Object invoke(MethodInvocation inv) throws Thorwable {
   Object[] args = inv.getArguments();
   String groupId = args[0];
   String groupName = args[1];
   .... if user has access call inv.proceed, else throw AccessDeniedException
}

Spring Framework のMethodInterceptorは、Spring Security のMethodSecurityInterceptorとほとんど同じです。

于 2009-05-27T16:09:15.807 に答える