我仅在生产服务器上面临一个非常奇怪的问题。
我正在使用 SAP Hybris ,后者使用 Spring security 。
当用户尝试访问该站点的任何安全URL时,它将重定向到登录页面,一旦他登录到系统,它就会重定向回到他之前尝试访问的URL。这是预期的行为。
现在在生产店面节点上,当我重新启动服务器时,它可以正常工作一段时间(例如大约30分钟)。然后它停止工作。登录用户重定向到主页后,而不是他尝试访问的安全URL。
注意::在所有较低的环境(本地,DEV,舞台等)中,它的运行都很好。
有什么主意吗?您的帮助将不胜感激!
编辑:-即使我使用IP地址直接访问我的应用程序节点(tomcat服务器),也会发生此问题,因此我认为它与LB /缓存服务器/ Web服务器/任何群集都不相关设置。
答案 0 :(得分:0)
已经很长时间了,所以我忘记了造成此问题的确切原因。我认为我能够在本地重新生成它,并通过覆盖StorefrontAuthenticationSuccessHandler的forceDefaultTargetUrlBySession方法来修复它。这是我提交的代码。
protected void forceDefaultTargetUrlBySession(final HttpServletRequest request, final HttpServletResponse response)
{
//if redirected from some specific url, need to remove the cachedRequest to force use defaultTargetUrl
final RequestCache requestCache = new HttpSessionRequestCache();
final SavedRequest savedRequest = requestCache.getRequest(request, response);
if (savedRequest != null)
{
if (savedRequest.getRedirectUrl() != null && StringUtils.contains(savedRequest.getRedirectUrl(), PASSWORD_UPDATE_PAGE_PATH))
{
requestCache.removeRequest(request, response);
}
}
}