on
[Spring Boot] 컨트롤러에서 redirect 경로
[Spring Boot] 컨트롤러에서 redirect 경로
반응형
문제점 : 아이디 찾기를 구현하는 도중 View의 form을 제축하면 시큐리티에 의해 login폼으로 이동하였다.
해결 : 컨트롤러에서 사용한 redirect의 경로를 잘못 지정하였던 것을 고쳤다.
프로젝트 구조
resources > templates > account > findIdForm이 존재
// ID 찾기 @GetMapping("findIdForm") public String findIdForm(@RequestParam(required = false) String email, Model model) { if(email != null) { List memberList = memberService.getMemberByEmail(email); model.addAttribute("memberList", memberList); } return "/account/findIdForm"; } // ID 찾기 @PostMapping("/findId") public String findId(String email, Model model){ // view의 form->input 의 name과 매핑됨. if(memberService.checkEmail(email)) { return "redirect:/findIdForm?email=" + email; } else { return "redirect:/account/findIdForm?error=true"; } }
<고치기 전 코드 (PostMapping의 else 부분)>
// ID 찾기 @GetMapping("findIdForm") public String findIdForm(@RequestParam(required = false) String email, Model model) { if(email != null) { List memberList = memberService.getMemberByEmail(email); model.addAttribute("memberList", memberList); } return "/account/findIdForm"; } // ID 찾기 @PostMapping("/findId") public String findId(String email, Model model){ // view의 form->input 의 name과 매핑됨. if(memberService.checkEmail(email)) { return "redirect:/findIdForm?email=" + email; } else { return "redirect:/findIdForm?error=true"; } }
<고친 후 코드 (PostMapping의 else 부분)>
컨트롤러에서 PostMapping을 이용해 아이디 찾기 폼의 양식을 제출.
email을 제대로 입력하지 않은 경우 redirect:/findIdForm?error=true를 반환
email을 제대로 입력한 경우 redirect:/findIdForm?email= url로 입력한 email을 보내서 View의 타임리프 구문에서 활용
결론 : redirect할 때 경로를 컨트롤러 기준으로 작성하여 고쳤다.
from http://black-mint.tistory.com/33 by ccl(A) rewrite - 2021-12-30 19:01:20