带有forward的Spring Security SuccessHandler错误



当我使用自定义SuccessHandler尝试Http POST或Http PUT时,我不断收到Http 400错误。具体地说,在我转发请求之后,会出现错误。我将请求转发如下:

public void onAuthenticationSuccess(HttpServletRequest request,
        HttpServletResponse response, Authentication authentication)
        throws IOException, ServletException {
        String context = request.getContextPath();
        String fullURL = request.getRequestURI();
        String url = fullURL.substring(fullURL.indexOf(context)
                + context.length());
        request.getRequestDispatcher(url).include(request, response);
        request.getRequestDispatcher(url).forward(request, response);
}

我的任何其他不包括RequestBody的调用都不会产生Http400错误。可能是什么问题?

由于请求调度器在同一服务器上为servlet工作,请尝试request.getRequestDispatcher(conetext)。。。其中"context"是您在服务器上前进的相对目标,即/webapp/login参见

  • http://docs.oracle.com/javaee/7/api/javax/servlet/ServletRequest.html#getRequestDispatcher%28java.lang.String%29
  • http://www.jguru.com/faq/view.jsp?EID=206736

显然我不理解RequestDispatcher的includeforward方法。通过移除request.getRequestDispatcher(url).forward(request, response);,我让它开始工作。有关原因的解释,请访问:http://www.theserverside.com/tip/Include-vs-Forward-of-the-Servlet-RequestDispatcher.

最新更新