【发布时间】:2020-04-27 10:57:18
【问题描述】:
我正在处理一个 wicket 遗留项目,我正在尝试修复会话超时的错误。 基本上我想在会话超时后重定向到自定义错误页面。 这就是我所做的:
web.xml:
<session-config>
<session-timeout>1</session-timeout>
</session-config>
在应用程序类中:
@Override
public void init() {
super.init();
getApplicationSettings().setPageExpiredErrorPage(ErrorMessagePage.class);
这不起作用。我的意思是会话超时后,什么也没有发生。 我做错了什么?
编辑 04.05.20
根据 Martin 的反馈,我尝试实现会话验证检查器:
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());
}
另外,我可能应该在我的第一篇文章中指定我使用 wicket SignInPanel 进行身份验证。超时后,我希望用户退出并重定向到特定页面。
这是我在上面的代码中尝试过的,但是在会话超时后,不会发生重定向。更糟糕的是,用户仍处于登录状态。我错过了什么?
【问题讨论】:
标签: wicket