重新投入生产后,重定向已停止工作

时间:2018-10-08 13:11:01

标签: spring spring-security url-redirection hybris

我仅在生产服务器上面临一个非常奇怪的问题。

我正在使用 SAP Hybris ,后者使用 Spring security

当用户尝试访问该站点的任何安全URL时,它将重定向到登录页面,一旦他登录到系统,它就会重定向回到他之前尝试访问的URL。这是预期的行为。

现在在生产店面节点上,当我重新启动服务器时,它可以正常工作一段时间(例如大约30分钟)。然后它停止工作。登录用户重定向到主页后,而不是他尝试访问的安全URL。

注意::在所有较低的环境(本地,DEV,舞台等)中,它的运行都很好。

有什么主意吗?您的帮助将不胜感激!


编辑:-即使我使用IP地址直接访问我的应用程序节点(tomcat服务器),也会发生此问题,因此我认为它与LB /缓存服务器/ Web服务器/任何群集都不相关设置。

1 个答案:

答案 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);
        }
    }
}