确定Spring安全性中无效会话的重定向

时间:2014-10-15 06:56:14

标签: session spring-security

我在我的webapp项目上设置了Spring Security。

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

spring security配置非常基本,我有

<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'。

我说这是一个问题,因为如果用户在一段时间后尝试转到/ contact-us页面(我们是一个不受保护的资源),他会被重定向到主页。

我认为一个解决方案是spring会创建一个新会话,然后重定向到先前请求的资源,而不是始终是invalid-session-url。

你如何处理这些情况?

0 个答案:

没有答案