Вопрос

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

String joinGroup(String groupId, String groupName);

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

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

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

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

Есть ли способ вообще получить к нему доступ?

Это было полезно?

Решение

Используйте org.directwebremoting.AjaxFilter.

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

Обычно этот метод выполняет следующее:

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

Другие советы

Я предполагаю, что вы используете МетодПерехватчик который вызывается (это означает, что ваша конфигурация правильна) только при использовании вышеуказанного метода.

...
@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 почти то же самое, что и МетодSecurityInterceptor в Spring Security.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top