Я работаю над устаревшим проектом калитки и пытаюсь исправить ошибку с тайм-аутом сессии. По сути, я хотел бы иметь перенаправление на обычную страницу ошибки после истечения времени сеанса. Вот что я сделал:
web. xml:
<session-config>
<session-timeout>1</session-timeout>
</session-config>
в классе приложения:
@Override
public void init() {
super.init();
getApplicationSettings().setPageExpiredErrorPage(ErrorMessagePage.class);
Это не работает. Я имею в виду, что после сеанса ничего не происходит. Что я делаю не так?
РЕДАКТИРОВАТЬ 04.05.20
Основываясь на отзывах Мартина, я попытался внедрить средство проверки достоверности сеанса:
public class SessionValidityChecker implements IRequestCycleListener {
@Override
public void onBeginRequest(RequestCycle cycle) {
HttpServletRequest request = (HttpServletRequest) cycle.getRequest().getContainerRequest();
boolean sessionValid = request.isRequestedSessionIdValid();
if (!sessionValid) {
cycle.setResponsePage(SessionExpiredPage.class);
}
}
}
и в Application.class
public void init() {
super.init();
getRequestCycleListeners().add(new SessionValidityChecker());
}
Также, что я мог бы указать в своем первом посте, это то, что я использую калитку SignInPanel для аутентификации. После тайм-аута я бы хотел, чтобы пользователь вышел из системы и был перенаправлен на указанную c страницу.
Это то, что я пробовал с приведенным выше кодом, но после истечения времени сеанса перенаправление не происходит. Хуже того, пользователь все еще вошел в систему. Что мне не хватает?