본문 바로가기
TIL(Today I Learned)

TLI 30일 (23. 6. 23. 금)

by seed0335 2023. 6. 23.
  1. 배운 내용, 특히 중요한 부분
    1. 기술 외 부분(소통 등) : 
      1. 계속하다보니, 어느새 많이 발전했고, 동기들도 많이 알게 되었다. 
      2. 주석을 쓰면서 한 문장 한 문장 완성 중
      3.  
        1. 기술적인 부분 : 
          1. 로그인 , 쿠키, 세션, 검증, 필터 등
          2. 오늘의 목표와 일정 및 점검
            1. 오늘의 목표 : 스프링 부트의 놀라운 기능으로 대부분의 기능들이 간단한 코드로 끝났다. 
            2. 목표를 위한 일정 :
              1. 09~13 : 
              2. 14~18 :
              3. 19~21 : 
          3. 점검
            1. 목표 달성 : 로그인 기능 구현 완료
            2. 하루를 돌아보면서 느낌 : 포기하지 않고 계속 배우면 끝은 온다. 
          4. 오늘의 문제(과제, 코딩테스트 등)
            1. 문제 : 열심히 했으나 부족한 공부 지식에 좌절감에 빠짐
            2. 시도 : 운동, 밥도 먹고, 다양한 방법으로 해결
            3. 해결 : 다시 마음 다잡고 공부 후 드디어 로그인 기능 구현, 엄청 간단하지만, 사전지식이 많이 필요함
            4. 알게 된 것 : 로그인 기능 구현과 쿠키
    @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);
    }

'TIL(Today I Learned)' 카테고리의 다른 글

TLI 32일 (23. 6. 27. 화)  (0) 2023.06.27
TLI 31일 (23. 6. 26. 월)  (0) 2023.06.26
TLI 29일 (23. 6. 22. 목)  (0) 2023.06.22
TLI 28일 (23. 6. 21. 수)  (0) 2023.06.22
TLI 27일 (23. 6. 20. 화)  (0) 2023.06.21

댓글