我有登录成功和重定向到页面的奇怪问题。
下面是我的弹簧安全配置。
<http auto-config="true" use-expressions="true">
<intercept-url pattern="/login.hst**" access="anonymous or authenticated" />
<intercept-url pattern="/**/*.hst" access="authenticated" />
<form-login login-page="/login.hst"
authentication-failure-url="/login.hst?error=true"
authentication-success-handler-ref="loginSucessHandler" />
<logout invalidate-session="true" logout-success-url="/home.hst"
logout-url="/logout.hst" />
<remember-me key="jbcpHaverERP" authentication-success-handler-ref="loginSucessHandler"/>
<session-management>
<concurrency-control max-sessions="1" />
</session-management>
</http>
LoginSuessHandler 类:
@Service
public class LoginSucessHandler extends
SavedRequestAwareAuthenticationSuccessHandler {
@Override
public void onAuthenticationSuccess(HttpServletRequest request,
HttpServletResponse response, Authentication authentication)
throws ServletException, IOException {
...
super.setUseReferer(true);
super.onAuthenticationSuccess(request, response, authentication);
}
}
现在成功重定向到请求页面的问题。如果我直接引用任何安全 url,spring 会将我重定向到登录页面并成功登录到原始请求的链接。但是,如果用户之前选择了记住我,然后关闭浏览器并现在请求直接 URL,则这不起作用,他正在被正确验证,而不是将他重定向到请求的页面弹簧重定向到 /。我检查了日志和一些 spring 源代码,发现它无法确定目标 url。
我试图设置参考,但参考值为空。但是我注意到一件奇怪的事情,在 spring 安全配置中,如果我从 remember-me 配置中删除 authentication-success-handler ,那么它就可以工作。
<remember-me key="jbcpHaverERP" authentication-success-handler-ref="loginSucessHandler"/>
无法弄清楚问题。表单登录和记住我的身份验证成功处理程序实现是否需要不同?