인프런 커뮤니티 질문&답변
궁금한점이 있습니다
작성
·
381
1
로그인 하지 않고 /item 요청시
1. LogFilter 필터
2. LoginCheckFilter 필터
순으로 실행되는데 로그인 필터에서
httpResponse.sendRedirect("/login?redirectURL=" + requestURI);
으로 redirect한 부분에서 이해가 되질 않습니다.
해당 URL : /login?redirectURL=requestURL 로 클라이언트에서 다시 재요청하는데 처음에는
@GetMapping("/login")
public String loginForm(@ModelAttribute("loginForm") LoginForm form) {
return "login/loginForm";
}
get 메서드로 매핑된 loginForm으로 컨트롤러가 호출되어 화면을 랜더링해주고 그다음에
@PostMapping("/login")
public String loginV4(@Valid @ModelAttribute LoginForm form, BindingResult bindingResult,
@RequestParam(defaultValue = "/") String redirectURL,
HttpServletRequest request) {
if (bindingResult.hasErrors()) {
return "login/loginForm";
}
Member loginMember = loginService.login(form.getLoginId(), form.getPassword());
if (loginMember == null) {
bindingResult.reject("loginFail", "아이디 또는 비밀번호가 맞지 않습니다.");
return "login/loginForm";
}
//로그인 성공 처리
//세션이 있으면 있는 세션 반환, 없으면 신규 세션을 생성
HttpSession session = request.getSession();
//세션에 로그인 회원 정보 보관
session.setAttribute(SessionConst.LOGIN_MEMBER, loginMember);
return "redirect:" + redirectURL;
}
POST 메서드로 매핑된 loginV4 메서드가 호출되는거 아닌가요?
그러면 처음 필터에서 redirect로 해당 URL 파라미터로 보낸 쿼리 파라미터인
redirectURL=requestURL을 POST 메서드(loginV4)에서 사용할 수 있게 쿼리 파라미터를
유지 시켜줘야하는거 아닌가요?
get 메서드 loginForm에서 쿼리 파라미터로 받은 값은 loginForm.html에서 사용할 수 있지만
다시 post메서드인 loginV4에서 사용하기 위해 loginForm.html에서 쿼리 파라미터를 보내줘야하는거 아닌가요..?






안녕하세요 김영한님
언급해주신 get의 url을 그대로 post로 전송된다는 말씀은 쿼리파라미터도 포함된다는 말씀이신지 다시한번 답변해주시면 감사하겠습니다