我在我的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。
你如何处理这些情况?