- 배운 내용, 특히 중요한 부분
- 기술 외 부분(소통 등) :
- 계속하다보니, 어느새 많이 발전했고, 동기들도 많이 알게 되었다.
- 주석을 쓰면서 한 문장 한 문장 완성 중
-
- 기술적인 부분 :
- 로그인 , 쿠키, 세션, 검증, 필터 등
- 오늘의 목표와 일정 및 점검
- 오늘의 목표 : 스프링 부트의 놀라운 기능으로 대부분의 기능들이 간단한 코드로 끝났다.
- 목표를 위한 일정 :
- 09~13 :
- 14~18 :
- 19~21 :
- 점검
- 목표 달성 : 로그인 기능 구현 완료
- 하루를 돌아보면서 느낌 : 포기하지 않고 계속 배우면 끝은 온다.
- 오늘의 문제(과제, 코딩테스트 등)
- 문제 : 열심히 했으나 부족한 공부 지식에 좌절감에 빠짐
- 시도 : 운동, 밥도 먹고, 다양한 방법으로 해결
- 해결 : 다시 마음 다잡고 공부 후 드디어 로그인 기능 구현, 엄청 간단하지만, 사전지식이 많이 필요함
- 알게 된 것 : 로그인 기능 구현과 쿠키
@PostMapping("/login")
public String loginV4(@Valid @ModelAttribute LoginForm form, BindingResult bindingResult,
@RequestParam(defaultValue = "/") String redirectURL,
HttpServletRequest request) {
if(bindingResult.hasErrors()) {
return "login/loginForm";
}
// 에러가 없으면, 아래 진행되고, 멤버를 리턴함(null일 수도 있음)
Member loginMember = loginService.login(form.getLoginId(), form.getPassword());
// 로그인 멤버가 null이면 실패 메시지가 출력)
if (loginMember == null){
bindingResult.reject("loginFail", "아이디 또는 비밀번호가 맞지 않습니다.");
return "login/loginForm";
}
//로그인 성공 처리
//세션이 있으면 있는 세션 반환, 없으면 신규 세션을 생성 디폴트가 true 생략 가능
HttpSession session = request.getSession();
// 세션에 로그인 회원 정보 보관
session.setAttribute(SessionConst.LOGIN_MEMBER, loginMember);
//쿠키 생성
//쿠키에 시간 정보를 주지 않으면 세션 쿠키(브라우저 종료시 모두 종료)
// sessionManager.createSession(loginMember,response);
return "redirect:" + redirectURL;
}
public Member login(String loginId, String password) {
// Optional<Member> findMemberOptional = memberRepository.findByLoginId(loginId);
// Member member = findMemberOptional.get();
// if(member.getPassword().equals(password)) {
// return member;
// } else {
// return null;
// }
return memberRepository.findByLoginId(loginId)
.filter(m -> m.getPassword().equals(password))
.orElse(null);
}
댓글