我已经使用此处提供的示例实现了 spring security openid 集成:OpenId+Spring Integration
集成工作正常。当我请求受保护的资源时,我会被重定向到登录页面,并且在身份验证后,我会自动重定向到受保护的资源。
但是,如果我在一个不受保护的页面上(类似于这里描述的情况:http: //forum.springsource.org/showthread.php?95317 -Redirect-to-original-page-after-login-success-failure )和我点击登录按钮..登录后我被重定向到主页。我想被重定向到我单击登录按钮的页面。
春季论坛主题建议覆盖 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 删除(可能是因为这个问题:https ://jira.springsource.org/browse/SEC-1241 )
如果此过滤器在 OpenIDAuthenticationFilter 之后运行,那么我确实会遇到发布参数在每个请求后连接的问题。
有人可以指出正确的前进方向吗?