Web/SpringBoot
[Spring Boot] 컨트롤러에서 redirect 경로
Black Mint
2021. 12. 30. 16:33
728x90
문제점 : 아이디 찾기를 구현하는 도중 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<Member> 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<Member> 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의 타임리프 구문에서 활용