Spring security 发生会话无效时如何配置自定义Url

Spring security 发生会话无效时如何配置自定义Url,spring-security,Spring Security,我使用的是SpringSecurity3,我的ApplicationContext-Security.xml指定 <form-login login-page="/genesis" default-target-url="/diagnostics/start-diagnostics" authentication-failure-url="/genesis?authfailed=true" authentication-success-handler-ref="c

我使用的是SpringSecurity3,我的ApplicationContext-Security.xml指定

 <form-login login-page="/genesis" default-target-url="/diagnostics/start-diagnostics"
      authentication-failure-url="/genesis?authfailed=true"
      authentication-success-handler-ref="customTargetUrlResolver"/>
      <access-denied-handler error-page="/genesis?notauthorized=true"/>

     <logout logout-success-url="/genesis"/> 

    <session-management session-authentication-error-url="/genesis"> 
            <concurrency-control max-sessions="1"/>
    </session-management>

但是,当我在第二个浏览器中登录我的应用程序,然后在我尝试执行任何操作时立即返回到第一个浏览器时,我会看到一个纯白色的屏幕,屏幕上显示消息“此会话已过期(可能是由于以同一用户身份尝试多次并发登录”

如何配置Spring Security 3以显示我自己的“您已断开连接”URL?

您可以:

  • 强制并发筛选器引发身份验证异常(它将由
    处理)
  • 提供您自己的会话过期页面
这些情况如下所述:

属性

如果超过最大值,则出现错误

如果设置为“true”,则在以下情况下将引发SessionAuthenticationException 用户试图超过允许的最大会话数 默认行为是使原始会话过期

过期的url

用户尝试使用会话时将重定向到的URL 已被并发会话控制器“过期”,因为 用户已超过允许的会话数并已登录 在其他地方也应设置。除非超出最大值时出现异常 如果未提供任何值,则只会写入到期消息 直接返回到响应

还可以查看和以了解更多详细信息


回答您的问题:在配置中,您应该有如下内容:

<session-management session-authentication-error-url="/genesis"> 
    <concurrency-control max-sessions="1" expired-url="/sessionExpired.jsp" />
</session-management>


请注意,
过期url
会话身份验证错误url

的含义不同,“过期消息将直接写回响应”?这只是一个错误?@zygimantus这里的意思是,如果您不设置
过期url
,Spring Security将返回HTTP响应,并显示一些消息,仅此而已-无重定向等。