"Session expired" 无法在 Wicket 中工作

"Session expired" not working in Wicket

当我的 wicket 应用程序的用户失去他们的会话(例如会话过期)时,links 在他们看到的页面和表单提交上,只向用户显示起始页。相反,如果无法显示正确的结果,我希望 Wicket 显示其 "session expired" 错误消息。

比如首页显示一些数据。您在搜索字段中输入查询,然后单击提交按钮。您可能希望看到过滤后的结果或错误(会话已过期),但 Wicket 只是默默地创建一个新会话并显示起始页,这是没有过滤器的结果。这看起来像一个错误 ("filter doesn't work!")。

例如,如果您转到页面 https://login.firstbird.eu/,然后删除 JSESSIONID cookie,然后单击 "forgot your password" link,那么您会期望 "forgot password" 要显示的页面,而是再次显示起始页。 (我知道这可以通过可添加书签 link 来解决,但还有其他情况依赖于会话和页面信息,而无法通过可添加书签 link 来解决。)

日志中没有序列化错误,但我认为这无关紧要。无论会话和页面是否可序列化,会话仍会过期(例如超时)。

我想我第一次注意到这个功能是在 Wicket 1.5 中;我很确定这在 Wicket 1.4 中有效。

在我看来这像是 Wicket 中的一个错误。我错了吗?我在这里误解了 Wicket 的意图吗?还是我做错了什么?

有一个设置是显示PageExpiredPage还是重新创建当前页面: https://github.com/apache/wicket/blob/2de1284a589f7862133bb2c2166bf8563268d252/wicket-core/src/main/java/org/apache/wicket/settings/IPageSettings.java#L67-L77

大多数人更愿意展示新鲜事例,而不是失去背景并重新找回。这就是为什么这是默认值。