【问题标题】:Redirection stopped working after sometime on Production重定向在生产一段时间后停止工作
【发布时间】:2018-10-08 13:11:01
【问题描述】:

我只在生产服务器上遇到了一个非常奇怪的问题。

我正在使用 SAP Hybris,它使用 Spring 安全性

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

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

注意:它在所有较低的环境(本地、DEV、Stage 等)中都可以正常工作。

有什么想法吗?您的帮助将不胜感激!


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

【问题讨论】:

  • 对于所有 url(篮子、付款、票等)还是其中的一些?
  • 对所有网址都支持
  • 你有集群系统吗?可能是登录请求重定向到另一个节点。您可以在标题中检查节点 ID。
  • 是的,但即使我直接访问应用程序节点(tomcat)也会发生这种情况
  • 听起来您的基础架构确实存在一些问题。 LoadBalancer 和“粘性会话”是怎么回事,你检查过这个吗?也许你可以给我们一个关于你的系统设置的摘要。

标签: spring spring-security url-redirection hybris


【解决方案1】:

已经很久了,所以我忘记了问题的确切原因。我想我能够在本地重新生成它并通过覆盖 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);
        }
    }
}

【讨论】:

    猜你喜欢
    • 2011-05-18
    • 2010-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-20
    • 1970-01-01
    相关资源
    最近更新 更多