浏览器上的后退按钮不会将控制流发送到 API

Back button on browser does not send the control flow to API

我有两个 API:

  1. /登录(returns登录jsp)
  2. /home(returns主页jsp)

功能:

最初,我在登录屏幕上,按下登录按钮后,我转到主屏幕。

当我在主页屏幕上使用注销按钮注销时,我被重定向到登录屏幕。

在 /home API 中,条件如下:

if (userLoggedIn()) {
  return new ModelAndView("/homePage");
} else {
  return new ModelAndView("/loginPage");
}

问题:

当我注销并转到登录页面时,我单击浏览器的后退按钮。 我被重定向到主页。 (不正确)

但是,如果我直接使用url打开主页,我会被重定向到登录页面(正确

我调试了应用程序,发现在按下后退按钮时,控件甚至没有进入 /home API。

如何确保在按下后退按钮时,我的屏幕被重定向到登录页面?

将 [OutputCache(NoStore = true, Duration = 0, VaryByParam = "None")] 设置为操作。这样请求也将在后退按钮上发出,您的功能将进行其余的重定向。

找到解决办法。我的问题已解决。

在 servlet 中,为无缓存添加以下行。

response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); 
response.setHeader("Pragma", "no-cache");
response.setDateHeader("Expires", 0);