Session 决定Spring security中无效会话的重定向

Session 决定Spring security中无效会话的重定向,session,spring-security,Session,Spring Security,我已经在我的webapp项目上设置了Spring安全性 我的应用程序会话过期时间设置为15分钟 spring安全配置非常基本,我有 <http use-expressions="true" disable-url-rewriting="true"> <csrf /> <intercept-url pattern="/login/auth" access="permitAll" /> <intercept-url pattern

我已经在我的webapp项目上设置了Spring安全性

我的应用程序会话过期时间设置为15分钟

spring安全配置非常基本,我有

<http use-expressions="true" disable-url-rewriting="true">

    <csrf />

    <intercept-url pattern="/login/auth" access="permitAll" />
    <intercept-url pattern="/login*" access="permitAll" />
    <intercept-url pattern="/about" access="permitAll"/>
    <intercept-url pattern="/contact-us" access="permitAll"/>
    <intercept-url pattern="/" access="permitAll"/>
    <intercept-url pattern="/**" access="hasRole('ROLE_USER')" requires-channel="any"/>

    <session-management invalid-session-url="/?invalidSession=1"
                        session-authentication-error-url="/login?session=fail"
                        session-fixation-protection="migrateSession">
        <concurrency-control max-sessions="1" error-if-maximum-exceeded="true"
                             expired-url="/login?invalidSession=1"/>
    </session-management>

现在我遇到的问题是,例如,如果用户发送了无效的会话id,spring总是重定向到带有“/?invalidSession=1”的主页

我的意思是,这是一个问题,因为如果用户在一段时间后,尝试进入/联系我们页面(这是一个不受保护的资源),他会被重定向到主页

我认为一种解决方案是spring创建一个新的会话,然后重定向到以前请求的资源,而不是总是无效的会话url


你如何处理这些情况

如果contact us是一个不受保护的资源,它应该位于不包括会话管理的其他http元素中。您是否建议创建第二个元素,该元素包含所有不受保护的资源,而不包含任何元素?然后我是否应该使用access=“permitAll”将所有资源移动到新的http元素中?不,只是关于并联系我们。您可以添加2个http元素<代码>。在“联系我们”页面中,我使用安全标记库在标题上显示登录的用户名。当使用security=“none”将这些资源作为单独资源添加时,将跳过筛选器,并且使用安全功能的所有部分不再工作。我最终将无效会话url=“/?invalidSession=1”完全从我的配置中删除,以避免Spring security在从客户端发送的无效会话ID上失败