当URL包含字符串“?error”时,WebSphere不显示网页元素

时间:2019-04-18 13:20:13

标签: java spring-security websphere websphere-8

我正在研究一个Spring安全项目,如果用户插入了错误的userId-密码,网页将更新为“ Invalid Login Attempt”消息。

我正在AuthenticationFailureHandler.onAuthenticationFailure上发送重定向

onAuthenticationFailure()实现的代码段。

@Override
  public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response,
      AuthenticationException exception) throws IOException, ServletException {
      //some logic
      response.sendRedirect(String.format("%s?error", getUrl());
    }
  }

资源HTML页面具有带有百里香依赖性的div标签,以识别error对象并显示消息

<div th:if="${error}" id="loginFailedMessage" class="alert alert-danger">
   Invalid login attempt.
</div>

到目前为止,该实现可在Jboss应用服务器和WebLogic应用服务器上运行-但是,当不适用于Websphere 时。 WebSphere是否阻止了此类URL调用是有原因的-我缺少任何配置。我已经厌倦了不同版本的WebSphere 8.5.5.9到8.5.5.13

ps。 ffdc或应用程序日志中没有错误。

1 个答案:

答案 0 :(得分:0)

解决方案是在网址中使用error=true。由于某些原因,websphere不允许在不分配值的情况下使用url参数。

@Override
  public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response,
      AuthenticationException exception) throws IOException, ServletException {
      //some logic
      response.sendRedirect(String.format("%s?error=true", getUrl());
    }
  }