Spring security 发生会话无效时如何配置自定义Url
我使用的是SpringSecurity3,我的ApplicationContext-Security.xml指定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
<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响应,并显示一些消息,仅此而已-无重定向等。