Отключить параметры тела в запросе для Struts 1

64
8

Регулярное использование страницы входа в приложение использует DynaValidatorForm который при нажатии "submit" делает запрос POST, содержащий имя пользователя и пароль для пользователя. Затем он проверяется и рассматривается в связанном классе действий.

Код сервера:

protected ActionForward performAction(ActionMapping mapping,
ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
DynaValidatorForm dynaForm = (DynaValidatorForm) form;
//validation here
//...
//
Login login = new Login();
PropertyUtils.copyProperties(login, dynaForm);
//login object is used from here on out

Однако можно войти в систему, www.my-site.com/LoginPage.do?loginName=username&password=password запрос GET с параметрами в URL-адресе, то есть www.my-site.com/LoginPage.do?loginName=username&password=password

Есть ли способ отключить Struts от использования параметров URL в форме?

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

Любая помощь очень ценится!

спросил(а) 2021-01-25T15:25:17+03:00 5 месяцев назад
1
Решение
63

Вы можете проверить метод запросов и вернуться из действия, если оно GET

if(request.getMethod().equalsIgnoreCase("GET")
return mapping.findForward("error");

ответил(а) 2021-01-25T15:25:17+03:00 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема