Spring Security SuccessHandler错误与转发

时间:2014-10-23 19:06:46

标签: java spring spring-security

当我使用自定义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的调用都不会产生Http 400错误。可能是什么问题呢?

2 个答案:

答案 0 :(得分:0)

由于请求调度程序适用于同一服务器上的servlet,请尝试request.getRequestDispatcher(conetext)...其中" context"是你的服务器上的相对目标,即/ webapp / login 见ie

答案 1 :(得分:0)

显然,我并不了解RequestDispatcher的includeforward方法。通过删除request.getRequestDispatcher(url).forward(request, response);,我得到了它的工作。有关原因的解释可在以下网址找到:http://www.theserverside.com/tip/Include-vs-Forward-of-the-Servlet-RequestDispatcher