Goal: "회원가입, 로그인 기능이 추가된 나만의 항해 블로그 백엔드 서버 만들기"
- 지난 입문주차 과제에 회원가입, 로그인 기능 및 JWT를 통한 인증이 추가된 과제
- 입문주차 과제 상태의 레파지토리 링크(회원가입, 로그인 등 구현 안된 상태)
1) 회원 가입 API
- username, password를 Client에서 전달받기
- username은
최소 4자 이상, 10자 이하이며 알파벳 소문자(a~z), 숫자(0~9)로 구성되어야 한다.- password는
최소 8자 이상, 15자 이하이며 알파벳 대소문자(a~z, A~Z), 숫자(0~9)로 구성되어야 한다.- DB에 중복된 username이 없다면 회원을 저장하고 Client 로 성공했다는 메시지, 상태코드 반환하기
참고자료
1. https://mangkyu.tistory.com/174
2. https://ko.wikipedia.org/wiki/정규_표현식
3. https://bamdule.tistory.com/35
2) 로그인 API
- username, password를 Client에서 전달받기
- DB에서 username을 사용하여 저장된 회원의 유무를 확인하고 있다면 password 비교하기
- 로그인 성공 시, 로그인에 성공한 유저의 정보와 JWT를 활용하여 토큰을 발급하고,
발급한 토큰을 Header에 추가하고 성공했다는 메시지, 상태코드 와 함께 Client에 반환하기
취소선으로 표시된 부분은 삭제 /배경으로 감싸진 부분은 수정
1) 전체 게시글 목록 조회 API
작성자명(username), 작성 내용, 작성 날짜를 조회하기2) 게시글 작성 API
토큰을 검사하여, 유효한 토큰일 경우에만 게시글 작성 가능제목, 작성자명(username), 작성 내용을 저장하고3) 선택한 게시글 조회 API
작성자명(username), 작성 날짜, 작성 내용을 조회하기4) 선택한 게시글 수정 API
토큰을 검사한 후, 유효한 토큰이면서 해당 사용자가 작성한 게시글만 수정 가능제목, 작성 내용을 수정하고 수정된 게시글을 Client 로 반환하기5) 선택한 게시글 삭제 API
토큰을 검사한 후, 유효한 토큰이면서 해당 사용자가 작성한 게시글만 삭제 가능
오늘도 어김없이 등장하는 '보안 글씨체'
- Request에
username을 넣어야 한다고 생각하고Post api/posts를 작성하다가 곰곰히 생각해보니, 이미 로그인 된 시점에username을 가지고 있다는 사실을 깨달았다.- 나중에
username을 키 값으로 활용해 수정, 삭제를 구현할 것이기에 더더욱username을 맘대로 설정하도록 해서는 안된다..!

처음으로 ERD 설계라는 것을 해보았다.
- 시작 전 '데이터 모델링 개념 및 ERD 다이어그램 그리는 법'을 정독하며 데이터 모델링과 ERD 다이어그램에 대해 이해하는 시간을 가졌다.
- 이후 ERD Cloud를 활용하여 위와 같이 ERD 다이어그램을 그려보았다.
- 간단히 설명하자면
User_Post는username을 FK(Foreign Key)로 잡은비식별자 관계이고,1[필수]:N[선택]관계이다.
과제 풀이 2단계: 회원가입 API 구현하기
과제 풀이 3단계: 로그인 API 구현하기(로그인 성공시 JWT 토큰 반환)
과제 풀이 4단계: 기존 구현사항 수정하기(토큰 유효성 검사 등)
무한 테스트&에러잡기 / 리팩토링 등