【发布时间】:2015-01-19 08:45:43
【问题描述】:
我正在为我的应用程序使用 spring 安全登录机制并测试了一切。一切正常。我有以下用例
- 如果客户未登录,应用程序会将客户重定向到登录页面。
- 成功登录后,应用程序会将客户重定向回他们被重定向到登录页面的同一页面
这是用于将用户重定向到其原始位置的 Java 代码
final SavedRequest savedRequest = this.requestCache.getRequest(request, response);
targetUrl = savedRequest.getRedirectUrl();
getRedirectStrategy().sendRedirect(request, response, targetUrl);
这里使用的重定向策略是DefaultRedirectStrategy,一切正常。应用程序现在部署在预生产服务器上,现在这似乎不起作用,我收到 404 错误。
当客户被重定向到主页时,targetUrl 显示为“/”,我有一个以此映射命名的 Spring 控制器
@RequestMapping("/")
public class HomePageController{ // home page code }
我的应用程序当前的 Pre-Prod urs 是 prepd-www.mysite.com,所以当 sendredirect 生效时,网页 URL 将更改为 prepd-www.mysite.com/prepd-www.mysite.com
我不确定是什么导致了这个问题。是因为代理服务器设置吗? 任何人都可以建议我有关此问题的可能根本原因吗?
我已经在所有本地机器上进行了尝试,并且在我们的 QA 上也进行了很好的测试,但一切都运行良好。
发生这种情况的环境的当前设置是
- 我们有 4 个应用服务器
- 我们有一个负载均衡器,它将流量重定向到其中一个应用服务器。
【问题讨论】:
-
你在你的 pre-prod 服务器中使用了一些 http 服务器(例如 apache)吗?如果您说在本地它工作正常,那么可能是一些配置问题。
-
@AleksandrM:是的,使用 Apache 作为 HTTP 服务器,即使我怀疑这是配置问题
-
这看起来像是 apache 反向代理的错误配置。你能显示代理的配置吗?
-
您的所有应用服务器是否可以相互访问。 @UmeshAwasthi
-
@UmeshAwasthi - 请提供您的 Spring Security 配置,尤其是
<form-login>元素。另外,HomePageController的“/”处理程序中发生了什么?
标签: java spring jakarta-ee spring-security