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의 타임리프 구문에서 활용
결론 : redirect할 때 경로를 컨트롤러 기준으로 작성하여 고쳤다. 즉, 매핑되는 주소를 적어준다.
'Web > SpringBoot' 카테고리의 다른 글
[Spring Boot] Ajax(비동기) 통신으로 댓글 구현 (+ Jquery 사용법) (0) | 2022.01.02 |
---|---|
[Spring Boot] form 양식 빈값 제출 (500 error 해결) (0) | 2021.12.30 |
[Spring Boot] 페이징 ( + MyBatis, 타임리프) 및 타임리프 리스트 띄우기 (0) | 2021.12.28 |
[Spring Boot] Timestamp로 회원가입 시간 저장 (MySQL) (0) | 2021.12.22 |
[Spring Boot] MyBatis + MySQL 셋팅 (+동적 쿼리) (0) | 2021.12.21 |