Button Wicket-登录、后退按钮、重新加载/重新加载登录页面

Button Wicket-登录、后退按钮、重新加载/重新加载登录页面,button,login,wicket,reload,back,Button,Login,Wicket,Reload,Back,我有一个Wicket(6.0)应用程序。有一个登录页面和一个概览页面。 LoginPage包含一个表单,用户可以在其中进行身份验证。 验证后,用户将重定向到概览页面 登录页面的一个特殊之处是: public void isUserLoggedIn() { if (getSession().isSignedIn()) { setResponsePage(new OverviewPage()); } } 如果用户已正确登录并希望转到登录页面,他将自动重定向到O

我有一个Wicket(6.0)应用程序。有一个登录页面和一个概览页面。 LoginPage包含一个表单,用户可以在其中进行身份验证。 验证后,用户将重定向到概览页面

登录页面的一个特殊之处是:

public void isUserLoggedIn() {

    if (getSession().isSignedIn()) {

        setResponsePage(new OverviewPage());

    }
}
如果用户已正确登录并希望转到登录页面,他将自动重定向到Overvie页面

我尝试了这一点,并在浏览器栏中输入了url
”http://anyserver/login/“
如我所料,我将被重定向到概览页面

但是,我的问题是:如果我登录(登录页面),我将被重定向到概览页面。如果我按下浏览器后退按钮,我将被重定向到登录页面?!但是为什么呢?直接url的工作方式与预期相同,但“后退”按钮的工作方式不同

我还添加了如下内容:

        response.setHeader("Pragma", "no-cache");
    response.setHeader("Cache-Control", "no-cache, max-age=0, must-revalidate, no-store");
所以有一个新的要求。我已经和FireBug核对过了

但是,只有当有人输入url时,才会执行LoginPage的逻辑。后退按钮不符合逻辑


有什么想法吗?

您的重定向逻辑可能是页面构造函数的一部分(或
onInitialize()
)。如果返回页面,则调用页面的构造。顺便说一句,您的浏览器中可能有一个页面实例的url(您可以通过检查url末尾是否存在
'?n'
来查看)。
您可以尝试将此逻辑放入页面的
onConfigure()
。我没有对此进行测试,因此我不确定它是否会工作。

因为登录页面是实际的上一页。setResponsePage设置新页面的内容,就像用户单击链接一样

Wicket缓存了页面的内容。如果您使用“后退”按钮,浏览器会询问页面的确切的、以前的版本(确实是由附加到URL的?指定的),因此wicket会提供

如果您想发送一个实际的重定向,这样就不会发生这种情况,请使用

throw new RestartResponseException(OverviewPage.class);
或者它的一个变体,让您创建页面。您还应该在已登录的情况下发送此消息