使用Spring Security实现无缓存

时间:2012-02-03 10:01:51

标签: java spring spring-security servlet-filters

我想知道如何使用Spring Security实现无缓存功能。也就是说,当用户退出应用程序时,他/她总是可以使用浏览器后退按钮来访问先前的页面。

我想阻止此行为并向用户显示一个页面已过期的消息并要求他重新登录。

如何使用Spring安全性实现此目的。

2 个答案:

答案 0 :(得分:1)

如果用户点击浏览器中的后退按钮,它可能会返回其本地浏览器缓存中的页面,而不会对网站执行新请求。

您能够执行所需功能的唯一方法是,如果您在每个页面上发送ajax请求,则必须查看用户会话是否仍然有效。但是,当用户在其浏览器中关闭javascript时,此方法无效。

答案 1 :(得分:0)

我认为页面缓存不是应用程序安全的责任 如果您的应用程序要求在使用后退按钮时阻止显示缓存页面,那么您的应用程序必须在其响应中发送无缓存标头,如下所示。
如果使用这些,则浏览器将在使用后退按钮时再次请求页面,并将使用spring security login config和access denied config。

HTTP标头:

    response.addHeader("Pragma", "no-cache");
    response.addHeader("Cache-Control", "no-cache");

    response.addHeader("Cache-Control", "no-store");
    response.addHeader("Cache-Control", "must-revalidate");
    // expires on some date in the past
    response.addHeader("Expires", "Mon, 8 Aug 2006 10:00:00 GMT");