2016-07-22 3 views
0

HTML 양식을 보낼 때 :무한 재귀 폼 포스트를

 <form method="post" action="/login"> 
      <input class="inputLogin" type="text" name="username" value="" placeholder="Email" > 
      <input class="inputPassword" type="password" name="password" value="" placeholder="Password">  
      <br> 
      <input class="formButton" type="submit" name="commit" value="Login"> 
     </form> 

서블릿 :

@Override 
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
    String username = req.getParameter(USERNAME_PARAMETER); 
    String password = req.getParameter(PASSWORD_PARAMETER); 
    boolean authenticated = authService.authenticate(req.getSession(), username, password); 
    if (authenticated) { 
     resp.sendRedirect("/user/home-page"); 
    } else { 
     System.out.println("ELSE"); 
     req.setAttribute(ERR_ATTRIBUTE, "Invalid credentials!"); 
     req.getRequestDispatcher("/login").forward(req, resp); 
    } 
} 

내가 양식을 보낼 때, 나는이 서블릿과 유래를 호출하는 무한 재귀를 얻을.

어디에 문제가 있습니까?

답변

0

POST 요청은 이미 로그인 서블릿을 실행하고 있으며, forward()를 수행하면 doPost 작업이 동일한 매개 변수로 다시 시작되고 루프에서 멈추게됩니다. .forward()를 생략하고 서블릿이 로그인 양식을 다시 보내도록 허용하십시오. 사용자가 성공적인 로그인에 3 회 실패하면 카운터를 계속 이동하고 다른 페이지로만 전달할 수 있습니다.