2011-02-03 2 views
0

Я рефакторинг приложения, которое выполняло собственное управление таймаутом сеанса. Я отметил, что HttpSession поддерживает установку значения тайм-аута.Сделать javax.servlet.http.HttpSession не время ожидания на определенных страницах

Существует прослушиватель событий (HttpSessionListener, который я предполагаю), который перенаправляется на страницу «тайм-аут». «Мы сожалеем, что ваша сессия истекла, это ссылка на страницу входа в систему».

Проблема в том, что когда я впервые попал в приложение и сижу на странице входа в систему, событие таймаута сеанса все еще срабатывает. Поэтому я могу посмотреть страницу входа и перенаправить на страницу тайм-аута.

Что я хочу, так это то, что если я нахожусь на странице входа и только на странице входа в систему, то тайм-аут сеанса не возникает. Как мне это сделать?

Я уже пробовал звонить HttpSession.setMaxInactiveInterval(-1) в разрешении по умолчанию в ActionBean для входа в систему, но это не сработало.

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

+0

Я не думаю, что это слушатель. Возможно, фильтр + слушатель. Не могли бы вы показать код? – Bozho

+0

Не легко. Это не приложение с открытым исходным кодом (пока). Что я должен искать для идентификации задействованных фильтров или слушателей? Найти работы на HttpSession? – Freiheit

+1

Создается ли сеанс, когда кто-то попадает на страницу входа? – Jeremy

ответ

0

Где у вас происходит перенаправление? Если это что-то декларативно установлено где-то в файле конфигурации, вы можете удалить его и реализовать интерфейс HttpSessionListener.

В методе sessionDestroyed у будет сделать следующее:

  • Получить сессию от sessionEvent
  • Если сеанс содержал флаг аутентификации затем перенаправить

U также может сохранить последний запрашиваемой пользователем, и использовать это как ссылку, чтобы определить, нужно ли перенаправлять или нет, но что вы будете делать, если пользователь уже прошел аутентификацию и просматривает страницу входа? У меня нет большой информации о вашем приложении.

В любом случае, HttpSessionListener - это путь, я думаю.

Смежные вопросы