Java Spring Security 3.0重定向到超时页面
我使用的是Spring Security 3.0.6,我希望能够做到以下几点: 如果用户在某个页面上,并且发生会话超时,则会将该用户带到登录页面,并在有效登录时重定向回发生超时的页面 我当前在security.xml文件中有以下内容Java Spring Security 3.0重定向到超时页面,java,spring,security,redirect,Java,Spring,Security,Redirect,我使用的是Spring Security 3.0.6,我希望能够做到以下几点: 如果用户在某个页面上,并且发生会话超时,则会将该用户带到登录页面,并在有效登录时重定向回发生超时的页面 我当前在security.xml文件中有以下内容 <http auto-config="true" use-expressions="true"> <form-login login-page="/login" default-target-url="/m
<http auto-config="true" use-expressions="true">
<form-login
login-page="/login"
default-target-url="/main"
always-use-default-target="false"
authentication-failure-url="/login.html?error=true"
authentication-success-handler-ref="authenticationSuccessHandler" />
<remember-me/>
<logout logout-success-url="/login" />
</http>
}
我通过javascript将用户发送回登录页面,如下所示:
window.location.href="/login";
在我的身份验证类中,url始终为空。如何使Spring重定向到正确的页面?您不需要编写任何自定义代码,因为Spring Security在默认情况下可以做到这一点。查看有关
身份验证成功处理程序ref
的文档
身份验证成功处理程序ref
这可以作为默认目标url的替代,并始终使用默认目标,使您能够在成功身份验证后完全控制导航流。该值应该是应用程序上下文中AuthenticationSuccessHandler bean的名称默认情况下,使用的实现并注入默认目标url
对AuthenticationSuccessHandler bean的引用,该bean应用于处理成功的身份验证请求不应与默认目标url结合使用(或始终使用默认目标)因为实现应始终处理到后续目标的导航
从您对上一个答案的评论中,我看到了两个选项
我希望这会有所帮助谢谢您的回复。默认情况下,spring是如何处理的?如果用户第一次进入登录页面,我需要将他们引导到/main。如果他们从另一页超时,我需要他们转到另一页。如何使用SavedRequestStataWareAuthenticationSuccessHandler实现这一点?一个代码示例会很有帮助。如果不定义
身份验证成功处理程序ref
,ThanksIt是Spring的常见行为。从你的配置中删除它。我想我误解了什么。我删除了authentication-success-handler-ref。spring如何知道哪个页面导致超时?我想在登录屏幕后被重定向回该页面。我试过了,登录后会一直显示正常的默认屏幕。超时不是由页面引起的,而是由用户不活动引起的。如果会话已过期,并且用户请求任何需要验证的页面,则将显示登录表单。登录后,用户将被带到会话到期后请求的页面,而不是超时发生时的页面。好的,我现在明白了。谢谢你的解释。我想我的问题是我没有要求另一页。我正在做一个ajax调用来更新同一页面上的内容。我可以在控制器中添加一些东西吗?
window.location.href="/login";