Помогите поймать тайм-аут сессии весной - PullRequest
2 голосов
/ 13 апреля 2011

У меня есть простое приложение Spring 3 MVC. Я использую атрибут Атрибута сеанса, и все работает нормально, за исключением случаев, когда я оставляю страницу на 30 минут или дольше. Я тогда получаю

org.springframework.web.HttpSessionRequiredException

говорит мне, что мой объект не найден в сеансе.

Я думаю, что мне нужно каким-то образом перенаправить обратно на ту же страницу, когда происходит тайм-аут сеанса. Я не уверен, как правильно сделать это с пружиной.

Вход в систему не требуется, и я уже проверяю, является ли объект нулевым.

Любые предложения будут оценены.

Спасибо

Ответы [ 2 ]

7 голосов
/ 13 апреля 2011

Вы можете добавить привязку страницы ошибки к HttpSessionRequiredException, которая будет перенаправлять на первую страницу вашего приложения

пример:

web.xml

<web-app>
    <error-page>
        <exception-type>org.springframework.web.HttpSessionRequiredException</exception-type>
        <location>/index.jsp</location>
    </error-page>
</web-app>
0 голосов
/ 13 апреля 2011

Невозможно просто перенаправить «обратно на ту же страницу». Ваш сеанс завершен, то есть файл cookie на клиенте больше не соответствует ни одному сеансу в контейнере сервлета, поскольку объект сеанса был удален из памяти. Совершенно необратимо.

Вы можете увеличить время ожидания сеанса. Это конфигурация приложения, а не Spring:

web.xml:

   <session-config>
     <session-timeout>120</session-timeout>
   </session-config>

даст вам два часа простоя.

Обратите внимание, что сессии не являются бесплатными. Они потребляют ресурсы (память и диск при сериализации). Если один и тот же пользователь может повторно входить в систему несколько раз, у него будет несколько бездействующих сеансов, что потенциально может привести к DoS.

P.S. Если вы согласны с прошедшим сеансом и просто хотите сразу установить другой, вы всегда можете сделать это в фильтре, Spring или нет. Весна может иметь своих слушателей. Вам нужно будет что-то добавить в этот новый сеанс, чтобы ваш запрос работал.

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