我已使用此处提供的示例实现了spring security openid集成:OpenId+Spring Integration
集成工作正常。当我请求受保护的资源时,我会被重定向到登录页面,经过身份验证后,我会自动重定向到受保护的资源。
但是,如果我在一个不受保护的页面上(类似于此处描述的情况:http://forum.springsource.org/showthread.php?95317-Redirect-to-original-page-after-login-success-failure),我点击登录按钮..登录后我会被重定向到主页。我想重定向到我点击登录按钮的页面。
Spring论坛主题建议覆盖buildReturnToUrl方法。我通过它调试了。它总是生成以下形式的returnToURL:
http://localhost:8080/listocal/j_spring_openid_security_check
op和Rob Winch之间有一些幕后交流,我不确定op是如何覆盖它的。
或者,我尝试使用以下代码创建另一个过滤器:
public void doFilter(....) {
...
DefaultSavedRequest savedRequest = new DefaultSavedRequest((HttpServletRequest) request, new PortResolverImpl());
((HttpServletRequest)request).getSession().setAttribute("SPRING_SECURITY_SAVED_REQUEST", savedRequest);
}
如果此过滤器在OpenIDAuthenticationFilter之前运行,则RequestCacheAwareFilter会删除savedrequest(可能是因为此问题:https://jira.springsource.org/browse/SEC-1241)
如果此过滤器在OpenIDAuthenticationFilter之后运行,那么我确实遇到了在每个请求之后连接post参数的问题。
有人能指出正确的方法吗?
答案 0 :(得分:1)