如何使用弹簧安全处理后退按钮

时间:2013-08-09 13:03:06

标签: spring spring-mvc spring-security

我正在使用spring security,我想知道如何解决这个后退按钮或浏览器的问题。

事情是我登录后,当我点击后退按钮。我再次来到登录页面。即使单击后退按钮,您仍然只能保留在登录主页中,这将是非常好的。

同样必须是如果我退出它不应该像我点击后退按钮我再次登录主页。我不知道如何解决这个问题。我知道浏览器会缓存页面但是当我使用像facebook或yahoo这样的标准网站时,看起来已经有了一些解决方案。任何方向或信息都会非常有用。?

2 个答案:

答案 0 :(得分:5)

部分问题来自浏览器缓存。您可以通过多种方式禁用它:

  • 为您的所有网页配置Spring MVC拦截器:
    <mvc:annotation-driven/>

    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**/*"/>
            <bean id="webContentInterceptor" class="org.springframework.web.servlet.mvc.WebContentInterceptor">
                <property name="cacheSeconds" value="0"/>
                <property name="useExpiresHeader" value="true"/>
                <property name="useCacheControlHeader" value="true"/>
                <property name="useCacheControlNoStore" value="true"/>
            </bean>
        </mvc:interceptor>
    </mvc:interceptors>
  • 呼叫响应方法:
    response.setHeader("Pragma", "no-cache");
    response.setHeader("Cache-Control", "no-cache");
    response.setDateHeader("Expires", 0);
  • 将元标记添加到相应的网页:
    <meta http-equiv="Pragma" content="no-cache">
    <meta http-equiv="Cache-Control" content="no-cache">
    <meta http-equiv="Expires" content="Sat, 01 Dec 2001 00:00:00 GMT">

答案 1 :(得分:1)

您是否尝试过Spring Security的内置cache control

@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

   @Override
   protected void configure(HttpSecurity http) throws Exception {
      http
      // ...
      .headers()
         .defaultsDisabled()
         .cacheControl();
   }
}