Spring Security:会话过期而不重定向到过期网址?

Posted

技术标签:

【中文标题】Spring Security:会话过期而不重定向到过期网址?【英文标题】:Spring Security: session expiration without redirect to expired-url? 【发布时间】:2011-02-11 04:54:35 【问题描述】:

我正在使用基于 Spring Security 3.0.2 表单的身份验证。但我不知道如何配置它,以便在会话过期时请求不会重定向到其他页面(过期网址)或显示“会话过期”消息。

我不想要任何重定向或消息,我希望启动匿名会话,就像没有会话的用户进入网站时一样。

我目前的配置:

<http>
  <intercept-url pattern="/login.action*" filters="none"/>
  <intercept-url pattern="/admin/**" access="ROLE_ADMIN" />
  <intercept-url pattern="/**" access="IS_AUTHENTICATED_ANONYMOUSLY"/>
  <form-login login-page="/login.action"
               authentication-failure-url="/login.action?error=failed"
               login-processing-url="/login-handler.action"/>
  <logout logout-url="/logoff-execute.action"
          logout-success-url="/logoff.action?done=1"/>
  <remember-me key="remember-me-security" services-ref="rememberMeServices"/>
  <session-management >
    <concurrency-control max-sessions="1"
                         error-if-maximum-exceeded="false"
                         expired-url="/login.action?error=expired.url"/>
  </session-management>
</http>

【问题讨论】:

你能解决这个问题吗? 【参考方案1】:

我会说你必须编写自己的过滤器。 看看spring framework docs。

还有一个尘土飞扬的样本,但我认为它仍然很正确:timeout filter sample。

【讨论】:

【参考方案2】:

你可以试试:

    <logout invalidate-session="true"
             logout-url="/LoginPage.jsf?error_logout=logoutComSucesso"/><!--invalido logout-success-url="/LoginPage.jsf?auth_error" -->
    <session-management session-fixation-protection="newSession" invalid-session-url="/LoginPage.jsf?error=sessionExpired"
                    session-authentication-error-url="/LoginPage.jsf?auth_error=BadCredencials" >
    </session-management>

【讨论】:

请用英文提供您的答案,谢谢 :) 此外,除了提供代码示例外,如果您解释您的答案,这对 OP 和任何其他访问者都有帮助

以上是关于Spring Security:会话过期而不重定向到过期网址?的主要内容,如果未能解决你的问题,请参考以下文章

Spring Security - 会话超时而不扩展/更新

Spring security自定义登录页面不重定向

Spring Security KeyCloak 适配器不重定向到登录

JSF 2 + Spring 3 + Shiro - 会话超时不重定向到登录页面

重定向进入空白页面而不重定向到路由 Laravel 5.8

Grails Spring Security - 登录后总是重定向到特定页面?