[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