为什么Wicket在tomcat重新启动后重定向到主页?

为什么Wicket在tomcat重新启动后重定向到主页?,wicket,Wicket,假设我的应用程序中有三个页面:登录页面、主页和其他页面。 当我第一次打开应用程序时,它会显示SignInPage。授权后,它会在主页上重定向我。之后,我手动打开另一个页面,重新启动servlet容器,然后按F5按钮。wicket再次将我重定向到主页,而不是其他页面。为什么会发生这种情况以及如何避免这种情况 -- 使用mountPage方法装入的所有页面。每个页面都是状态完整的,并且有@AuthorizationInstantiation注释。application类扩展Authenticated

假设我的应用程序中有三个页面:登录页面、主页和其他页面。 当我第一次打开应用程序时,它会显示SignInPage。授权后,它会在主页上重定向我。之后,我手动打开另一个页面,重新启动servlet容器,然后按F5按钮。wicket再次将我重定向到主页,而不是其他页面。为什么会发生这种情况以及如何避免这种情况

--

使用
mountPage
方法装入的所有页面。每个页面都是状态完整的,并且有@AuthorizationInstantiation注释。application类扩展AuthenticatedWebApplication并重写如下方法:

@Override
protected Class<? extends WebPage> getSignInPageClass() {
    return SignInPage.class;
}

@Override
public Class<? extends Page> getHomePage() {
    return HomePage.class;
}
(但我从未见过这一页被打开过)

更新:

解决方案是向SignInPage类添加以下代码:

@Override
protected void onBeforeRender() {
    if (((AuthenticatedWebSession)Session.get()).isSignedIn()) {
        continueToOriginalDestination();
        setResponsePage(Application.get().getHomePage());
    }
    super.onBeforeRender();
}

重新启动servlet容器将为您提供新会话,而不显示哪些页面已过期,所以这就是您被重定向到主页的原因


请检查此项:

重新启动servlet容器会为您提供新会话,而不会显示哪些页面已过期,这就是您被重定向到主页的原因


请检查此项:

当您重新启动servlet容器时,它将释放其所有会话。在下一个请求中,Wicket检测到这是一个新的http会话,应该将您重定向到登录页面,而不是直接重定向到主页。只有在成功验证后,您才能看到主页


如果使用
Component#重定向到InterceptPage(Page)
+
Component.continueToOriginalDestination()
,则在成功验证后,您可以登录到另一页。有关详细信息,请参阅组件.continueToOriginalDestination()的javadoc。

重新启动servlet容器时,它会释放所有会话。在下一个请求中,Wicket检测到这是一个新的http会话,应该将您重定向到登录页面,而不是直接重定向到主页。只有在成功验证后,您才能看到主页

如果使用
Component#重定向到InterceptPage(Page)
+
Component.continueToOriginalDestination()
,则在成功验证后,您可以登录到另一页。有关详细信息,请参阅
组件.continuetooriginaldestinition()
的javadoc

@Override
protected void onBeforeRender() {
    if (((AuthenticatedWebSession)Session.get()).isSignedIn()) {
        continueToOriginalDestination();
        setResponsePage(Application.get().getHomePage());
    }
    super.onBeforeRender();
}