Требование следующее: при истечении срока действия пользователя вызывается страница expired.htm, а при первом подключении к веб-сайту - login.htm.Как определить истекший сеанс против сеанса
Я попытался использовать фильтр, но он не работает, я не могу сказать, чтобы фильтровать, как понять, если это новый запрос или старый запрос истек. Это код, который я использовал:
if (session.getAttribute("userProfile") == null) {
logger.debug("Session: " + (session.isNew() ? "true" : "false"));
logger.debug(request.getSession().isNew());
if (request.getRequestedSessionId() != null && !request.isRequestedSessionIdValid()) {
return new ModelAndView("redirect:expired.htm");
} else {
return new ModelAndView("redirect:login.htm");
}
}
Я пробовал различные решения, предложенные здесь на переполнение стека и общим доступом в Интернет, но ничего не работает, и каждый запрос идет к expired.htm
.
Я бы сказал, что если пользователь посылает неверный идентификатор сеанса можно считать, что сеанс истек, т. е. для получения идентификатора пользователь должен был либо уже посетить сайт, либо скопировать ссылку с идентификатором сеанса. – Thomas
Я также проверил isNew, но это всегда верно, также когда сессия истекла (я активирую слушателя, который показывает мне, когда сессия заканчивается) –