https://meteor-blackberry-9c1.notion.site/144a618a3efb80119071d62e9a247024?pvs=4
지난주에 진행한 음식 주문 관리 시스템을 회원에게 제공하기 위해
이번 3주차 과제에서는 회원가입 API를 만들고,
로그인을 유지하는 작업을 진행해주세요. 😌
- 회원가입 기능 추가
- 새로운 사용자가 아이디(이메일), 비밀번호, 이름(닉네임) 등을 입력하여 회원가입할 수 있는 기능을 구현해주세요.
- REST API를 통해 구현해주세요
- 비밀번호는 반드시 암호화하여 DB에 저장해주세요. (예: BCrypt 등)
- 이미 존재하는 아이디로는 회원가입할 수 없도록 중복 검사를 해주세요.
- (선택, 난이도: ⭐️⭐️⭐️) 프로필 이미지를 함께 받아 저장할 수 있도록 해보시는걸 권장합니다. 이미지와 텍스트를 함께 받을 수 있는 방법을 고민해주세요. (힌트: formdata)
- 회원이 아이디와 비밀번호로 로그인할 수 있도록 로그인 기능을 구현해주세요.
- 로그인 기능 구현
- REST API를 통해 구현해주세요.
- 로그인에 성공하면 세션을 등록해 로그인을 유지해주세요.
- (선택, 난이도: ⭐️⭐️⭐️⭐️) 세션 대신 JWT를 사용해 개발하는 것도 좋습니다.
- 인증 및 인가 처리
- 로그인된 회원만 주문할 수 있도록 인증, 인가 처리를 구현해주세요.
- 자신의 주문 내역만 조회할 수 있도록 권한 처리를 해주세요.
- 세션 검증 로직은 서비스가 아닌 인터셉터를 통해 구현해주세요.
- 로그아웃 기능 추가
- 로그인 된 회원이 로그아웃할 수 있는 기능을 구현해주세요.
- REST API를 통해 구현해주세요.
- 로그아웃 시 세션을 만료시켜주세요.
- 깃허브 레포지토리 내에 이슈를 만들고 커밋과 PR에서 이슈를 트래킹 해주세요.
- 클래스 내에 너무 많은 책임이 들어가지 않도록 주의하여 작성해주세요.
- 암호화 로직의 경우 다른 클래스로 분리하는 등
- 한 메서드가 4줄이상 넘어가거나 들여쓰기(indent)가 3번이상이라면, 메서드내 책임을 분리할 수 있을지도 고민해주세요.
- 참고 키워드: (클린코드) 함수의 추상화 수준, (클린코드) 인덴트, 메서드 분리
- 메서드들의 private과 public 접근 제어자를 목적에따라 제대로 활용하고 있는지 확인해주세요.
- 이유없이 public으로 열어두지 않도록 주의해주세요.
- 실행 결과를 함께 남겨주세요
- Postman이나 API 테스트 툴을 통해 실행결과를 남겨주세요.