我使用此代码使最终用户在注销后无法使用浏览器后退按钮访问应用程序页面。如果最终用户单击浏览器后退按钮,则需要将用户再次返回到 ApplcationLogin 页面。这里工作正常,但单击“后退”按钮后,它会显示一页(不是应用程序登录页面)。此页面连续文档过期消息,并带有“再试一次”按钮,如果用户单击“再试一次”按钮,应用程序将重新登录。这是代码。
res.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
res.setHeader("Pragma", "no-cache"); // HTTP 1.0.
res.setDateHeader("Expires", 0); // Proxies
chain.doFilter(request, response);
最佳答案
您很可能使用 HTTP 基本身份验证。对于基本身份验证,没有真正的方法可以清除浏览器中的凭据。当访问某些 protected 内容时,浏览器只是再次发送凭据。此过程与您的缓存 header 完全无关。
如果这是原因,您可以切换到基于表单的身份验证。我们所做的另一个技巧是发送重定向到 dummy:dummy@xy.com/loggedout.jsp 以从浏览器中清除用户密码凭据,但是,这并不完美,而且会让用户感到困惑。
关于java - 如何避免用户注销后的缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22089510/