Проблема окончания сеанса Spring / Tomcat 6 - PullRequest
0 голосов
/ 07 октября 2011

Я использую Spring MVC для персональной веб-страницы с локальным сервером Tomcat 6. Я использую конфигурацию Tomcat по умолчанию (что затмение будет по умолчанию).

В моих контроллерах (используя один контроллер для каждой страницы и создавая Session-бины для передачи информации между ними) у меня есть два метода, один для захвата POST и один для захвата метода запроса GET. В логике страницы пользователь нажимает кнопку «Отправить» и использует возврат «redirect: abc.htm» для отправки их на новую страницу или обратно в метод GET.

Я явно не обрабатываю куки, но у меня есть вся информация в Session Beans, и я использую Spring Security для управления безопасностью / управлением пользователями.

У меня есть весенняя конфигурация безопасности, чтобы перенаправить пользователя обратно на страницу входа, если они не авторизованы У меня также есть ExceptionHandler, перехватывающий HttpSessionRequiredException, хотя это не то, что срабатывает, когда я прекращаю сеансы пользователя (он использует логику моей конфигурации Spring Security).

Когда сеанс истекает (я делаю это через Tomcat Manager), пользователь перенаправляется обратно на страницу входа. Они перенаправляются после того, как они пытаются что-то сделать (нажмите на кнопку Отправить или повторно посетите любую страницу, кроме login.htm).

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

Пример:

  1. Пользователь залогинен и находится на главной странице
  2. Срок действия сеанса пользователя истекает
  3. Пользователь, на главной странице, нажмите кнопку отправки
  4. Пользователь перенаправлен обратно на страницу login.htm
  5. Пользователь входит в систему и возвращается на главную страницу.
  6. Вместо того, чтобы следовать логике GET для главной страницы, они обрабатываются в POST главной страницы, и я не уверен, откуда берутся переменные POST.

Есть ли способ отследить, откуда возникла эта ошибка или что именно ее вызывает?

1 Ответ

1 голос
/ 07 октября 2011

Это сделано весенней безопасностью. Spring security сохраняет детали запроса в сеансе перед перенаправлением пользователя на страницу входа. При успешном входе в систему он получит детали запроса из сеанса и перенаправит на него.

Вы можете установить атрибут always-use-default-target конфигурации form-login , чтобы переопределить это поведение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...