강사님 질문입니다!!!
501
18 câu hỏi đã được viết
현재 loginService에서 DB에 있는 값 체크할 때
if(member.getPassword().equals(password)) {
return member;
} else {
return null;
}
이런식으로 비밀번호만 체크하잖아요?
근데 아이디가 틀릴 수도 있으니 아이디도 체크해줄려고
if(member.getLoginId().equals(loginId))
이런식으로 조건을 더 추가를 해주면
비밀번호만 체크하고 아이디가 다를땐
500에러를 내거든요?
java.util.NoSuchElementException: No value present
이런 에러인데요,.,.
아이디랑 비밀번호가 모두 일치해야 성공로직을 돌고
아이디가 없으면 아이디가 없다고
비밀번호가 다르면 비밀번호가 다르다고
이렇게 구성하려면 어떻게 해야할까요?
Câu trả lời 3
2
Jong Hee Park님 스스로 잘 해결하셨습니다.
optional에 대한 부분은 다음을 참고하시면 도움이 되실거에요.
https://homoefficio.github.io/2019/10/03/Java-Optional-%EB%B0%94%EB%A5%B4%EA%B2%8C-%EC%93%B0%EA%B8%B0/
감사합니다.
1
*LoginController
@PostMapping("/login")
public String login(@Valid @ModelAttribute("loginForm") LoginForm form, BindingResult bindingResult, HttpServletResponse response) {
if(bindingResult.hasErrors()) {
return "login/loginForm";
}
Optional<Member> member = mm.findByLoginId(form.getLoginId());
if(!member.isPresent()) {
bindingResult.reject("loginFail", "존재하지 않는 아이디 입니다.");
return "login/loginForm";
}
Member loginMember = loginService.login(form.getLoginId(), form.getPassword());
if(loginMember == null) {
bindingResult.reject("loginFail", "비밀번호가 맞지 않습니다.");
return "login/loginForm";
}
// 1. 로그인 성공 처리(쿠키 생성) : 쿠키 생성시 시간 정보를 설정하지 않으면 세션 쿠키로서 브라우저 종료시 모두 없어진다.
Cookie cookie = new Cookie("memberId", String.valueOf(loginMember.getId()));
response.addCookie(cookie);
return "redirect:/";
}
*LoginService
public Member login(String loginId, String password) {
// 2-1. 첫번째 방법
Optional<Member> findMember = mm.findByLoginId(loginId);
Member member = new Member();
if(findMember.isPresent()) {
member = findMember.get(); // 2-4. 주의 : Optional에서 값이 null인 객체에 get()을 호출하면 에러가 발생한다.
} else {
return null;
}
if(member.getPassword().equals(password)) {
return member;
} else {
return null;
}
/* 2-2. 두번째 방법(java8)
Optional<Member> byLoginId = mm.findByLoginId(loginId);
return byLoginId.filter(m -> m.getPassword().equals(password))
.orElse(null);
*/
/* 2-3. 세번째 방법(java8) - 간소화
return mm.findByLoginId(loginId).filter(m -> m.getPassword().equals(password)).orElse(null);
*/
}
이렇게 해결했습니다. 아이디가 DB에 없는 경우는 아이디가 없다고 뜨고 비밀번호가 틀린경우는 비밀번호가 틀리다고 하게끔 처리해줬는데요
이렇게 하는 방법도 맞는건가요? 의문이....
1
Optional<Member> findMember = mm.findByLoginId(loginId);
Member member = new Member();
if(findMember.isPresent()) {
member = findMember.get();
} else {
return null;
}
if(member.getPassword().equals(password)) {
return member;
} else {
return null;
}
-> 이런식으로 해결하긴 했는데 이게 맞는 방법인가요?
이미지 업로드와 db 트랜잭션 묶는법
0
42
1
Could not resolve org.springframework.boot:spring-boot-starter-validation:2.4.4
0
52
2
MessageSourceTest 코드
0
47
1
인터셉터 에러 설정
0
48
1
resolveArgument()메서드 질문
0
56
1
43강 검증1 에서 실패 로직 관련 질문있습니다.
0
54
2
타임리프 3.X 버전 rendering, serializer 에러 해결 방법
2
133
3
스프링 빈에 등록이 안되는거 같은데 어떻게 하면 좋을까요?ㅠㅠ
0
90
3
pdf 오타 문의
0
57
1
ItemUpdateForm 검증 관련 질문입니다.
0
48
1
22page 링크 주소 변경
0
59
2
특정 데이터와 파일을 함께 저장 시, 테이블 구조 질문
0
53
1
섹션3번 수업에 대한 질문입니다.
0
80
2
@Autowired 보다 더 좋은 방법이 어떤 걸까요?
0
85
2
타입컨버터 가 람다랑 비슷해 보이는데 저의 생각이 맞는지?.
0
65
1
자바스크립트 인라인에서 객체 직렬화 시 오류가 납니다
0
142
3
스프링부트 - 오류페이지2 에서 500.html 에서 쓰인 객체 질문
0
63
1
톰캣 에러 페이지가 안보입니다.
0
102
2
apiEceptionController에서 센드 에러 호출하면 안되는지?
0
81
1
세션 타임아웃시 쿠키 삭제 방법이 없나요?
0
118
2
ApiExceptionController 질문드립니다.
0
64
1
셀렉박스 챕터에서 option value에 ==배송 방식 선택== 이것을 넣은 이유가 궁금함, 이렇게 구상해도 되는지?
0
66
1
MemberRepository 필드의 fianl 선언 유무
0
85
2
혹시 index.html 에서는 fragment 사용이 안되는건가요
0
58
1

