로그인 폼 제약 메시지와 로그인 실패 메시지가 동시에 보임

김학준·2024년 6월 17일
0

게시판

목록 보기
4/44

문제 상황

로그인 페이지에서 아이디 또는 패스워드만 입력했을 때 각각의 필드에 공백일 수 없습니다 메시지와 로그인 실패 메시지인 아이디 또는 비밀번호가 맞지 않습니다.가 동시에 보인다.

오류 메시지

없음.

오류 발생 부분

LoginController.java

@Controller
@RequiredArgsConstructor
public class LoginController {
	private final LoginService loginService;

	@PostMapping("/auth/login.do")
	public String login(@Validated @ModelAttribute LoginForm loginForm, BindingResult bindingResult, HttpServletRequest req, Model model) {
		// 로그인 폼 입력을 바탕으로 회원 찾기
		MemberDto memberDto = loginService.login(loginForm);

		// 로그인 실패 -> ObjectError 추가
		if (memberDto == null) {
			bindingResult.reject("loginFail", Message.ID_OR_PWD_IS_WRONG.getDescription());
		}

		// 로그인 폼 입력이 잘못된 경우
		if (bindingResult.hasErrors()) {
			return "auth/login";
		}

해결 방법

@Controller
@RequiredArgsConstructor
public class LoginController {
	private final LoginService loginService;

	@PostMapping("/auth/login.do")
	public String login(@Validated @ModelAttribute LoginForm loginForm, BindingResult bindingResult, HttpServletRequest req, Model model) {
		// 로그인 폼 입력이 잘못된 경우
		if (bindingResult.hasErrors()) {
			return "auth/login";
		}

		// 로그인 폼 입력을 바탕으로 회원 찾기
		MemberDto memberDto = loginService.login(loginForm);

		// 로그인 실패 -> ObjectError 추가, 로그인 페이지를 다시 보여줌
		if (memberDto == null) {
			bindingResult.reject("loginFail", Message.ID_OR_PWD_IS_WRONG.getDescription());
			return "auth/login";
		}

애초에 로그인 폼의 입력이 잘못된 경우 그 이후 단계가 진행되지 못하도록 bindingResult에 에러가 있는 경우 로그인 페이지를 다시 보여주는 부분의 위치를 변경해준다. 로그인 실패 시에 로그인 페이지를 다시 보여주는 부분도 추가한다.

0개의 댓글