Доступ к данным записи DWR в Spring Interceptor - PullRequest
1 голос
/ 27 мая 2009

У меня есть действие DWR с сигнатурой метода следующим образом:

String joinGroup(String groupId, String groupName);

Вызывается через запрос DWR AJAX и работает нормально.

Однако я пытаюсь написать перехватчик Spring (работает очень похоже на ServletFilter), чтобы выполнить некоторую аутентификацию перед вызовом действия DWR. Перехватчик вызывается правильно, но мне нужно получить доступ к данным groupId и groupName в перехватчике.

Карта параметров запроса пуста, и я просмотрел весь список атрибутов запроса в отладчике, и я нигде не вижу данных.
PostData запроса также является нулевым.

Используя firebug, я вижу, что данные передаются на сервер (и это происходит при окончательном вызове метода joinGroup).
Я просто не могу получить к нему доступ в моем перехватчике.

Есть ли какой-нибудь способ, которым я могу получить к нему доступ?

Ответы [ 2 ]

2 голосов
/ 28 мая 2009

Использовать org.directwebremoting.AjaxFilter

Метод doFilter AjaxFilter вызывается DWR каждый раз, когда делается запрос Ajax для метода, для которого настроен этот фильтр. AjaxFilterChain, переданный этому методу, позволяет фильтру передавать подробности метода следующему объекту в цепочке.

Как правило, метод будет делать следующее:

  1. Изучить запрос
  2. При желании можно изменить метод, объект или параметры
  3. Либо вызовите следующую сущность в цепочке, используя AjaxFilterChain, либо решите вместо нее выполнить какое-либо другое действие.
  4. При желании можно изменить значение, возвращаемое пользователю
  5. Выполните какое-либо другое действие (например, ведение журнала)
1 голос
/ 27 мая 2009

Я предполагаю, что вы используете 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
}

MethodInterceptor в Spring Framework во многом совпадает с MethodSecurityInterceptor в Spring Security.

...