【问题标题】:Spring Security: Not able to logout/invalidate sessionSpring Security:无法注销/使会话无效
【发布时间】:2014-01-10 11:01:38
【问题描述】:

我的spring安全注销配置:

<security:logout logout-success-url="/login.htm" invalidate-session="true"/>

在我的 JSP 中,我提供了

a href="j_spring_security_logout">Logout</a>

当我点击“注销”按钮时,它会重定向到我的登录页面。但是当我尝试通过提供 url 来访问我的欢迎页面时,它允许我这样做。只有当我再次引用该页面时,它才会提示我输入凭据

知道如何解决这个问题吗?

【问题讨论】:

  • 当你说它允许你进入欢迎页面时,它是真的把你带到那里还是真的显示一个缓存页面?
  • 我猜这是缓存页面.. 但是我们如何确保它不会被显示?

标签: spring spring-security logout


【解决方案1】:

听起来您在退出后就可以看到缓存的欢迎页面。

为了防止缓存,您可以在 Spring 调度程序配置中添加 interceptor,这将设置某些标头,告诉浏览器不要缓存。您可以将拦截器应用于所有 .htm 页面 - 如果需要,也可以只是一个子集。应用于所有.htm 页面:

<mvc:interceptor>
    <mvc:mapping path="/**/*.htm" />
    <bean 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>

【讨论】:

    【解决方案2】:

    在 head 标签中添加这个来禁用缓存解决了我的问题

    <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">
    

    【讨论】:

      猜你喜欢
      • 2015-06-30
      • 2018-09-02
      • 2011-06-28
      • 2014-03-01
      • 2018-08-27
      • 1970-01-01
      • 2012-01-21
      • 2014-04-23
      • 2014-02-02
      相关资源
      最近更新 更多