【问题标题】:Spring Security: invalid-session-url versus logout-success-urlSpring Security:invalid-session-url 与 logout-success-url
【发布时间】:2012-05-16 02:35:30
【问题描述】:

我正在使用 Spring-Security 3.1。在我添加会话管理的 invalid-session-url 属性之前,它已正确重定向到注销页面。但是,在添加 invalid-session-url 后,即使我单击注销按钮,它也会重定向到会话过期页面。 此外,如果我加载登录页面,在会话超时期限之后,它会重定向到会话过期页面。

如果会话过期,我必须检查会话过期并将用户重定向到会话过期页面。但是,在使用 invalid-session-url 标记后,即使在登录和注销情况下,它也会将我重定向到会话过期页面。

在某些帖子中,建议不要使用 invalid-session-url。但是,我无法理解在实际会话过期后如何显示会话过期页面。

任何帮助将不胜感激。

【问题讨论】:

    标签: spring-security


    【解决方案1】:

    默认情况下,注销过程会首先使会话失效,从而触发会话管理重定向到超时页面。通过指定 invalidate-session="false" 将修复此行为。

        <sec:logout logout-success-url="/logout" invalidate-session="false" 
    delete-cookies="JSESSIONID" />
    

    【讨论】:

    • 请问需要delete-cookies 吗?
    • 如果您这样做,通过&lt;concurrent-session-control exception-if-maximum-exceeded ="true" max-sessions="1"/&gt; 设置最大会话限制可能会导致问题,因为您不会使会话无效。
    【解决方案2】:

    尝试在您的安全配置中添加以下内容。

    <http>
        <logout delete-cookies="JSESSIONID" />
    </http>
    

    【讨论】:

      【解决方案3】:

      会话到期仅限于在提交的请求中检测到无效的会话 cookie。如果您的注销没有删除会话 cookie,那么如果您再次访问该站点,它将重新提交,这将触发无效的会话 URL。这在the reference manual 中有解释。我会阅读它和随附的脚注。如那里所述,您需要删除会话 cookie,这可能会或可能不会根据您的容器工作。

      【讨论】:

        猜你喜欢
        • 2011-02-05
        • 1970-01-01
        • 2020-06-18
        • 1970-01-01
        • 1970-01-01
        • 2015-11-18
        • 1970-01-01
        • 2017-07-13
        • 1970-01-01
        相关资源
        最近更新 更多