-
Notifications
You must be signed in to change notification settings - Fork 1
2024. 06. 27(Thu)
yachimiya edited this page Jun 27, 2024
·
14 revisions
-
토큰 발급 방식
- 일반 및 소셜 로그인 시, 리프레시 토큰은 HTTP-Only 쿠키로 발급하고, 액세스 토큰은 헤더의 Authorization에 포함하여 발급하기로 한다.
- 쿠키의 이름은 카멜 케이스(Camel Case)를 따르기로 결정한다.
HTTP/1.1 200 OK
Set-Cookie: refreshToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...; HttpOnly; Path=/; Max-Age=2592000
Authorization: Bearer lyQhbBciO1JIUzI2NiIsBnR5cCI6GkpXBCJA...
-
이미지 파일 저장 방식
- 이미지 파일은 S3와 같은 원격 파일 저장용 버킷을 사용하지 않고, 서버에 직접 저장하기로 한다. (예: /attachments, /files 등)
- 파일 디렉토리 내부에서 또 세부적으로
user
,task
등으로 나뉠 수 있다.
-
휴대폰 검증 API 분리
- 회원가입 시와 아이디 찾기 시의 휴대폰 검증 API는 상태 코드와 로직이 모두 다르기 때문에 아래와 같이 경로를 분리한다:
/user/signup/valid/phone
/user/find/valid/phone
- 코드 인증 부분은 상태 코드는 동일하지만 로직이 유사하고 바디만 달라지는 상황이므로, 쿼리 파라미터를 통해 해결한다.
/user/valid/code?type=find
/user/valid/code?type=signup
- 회원가입 시와 아이디 찾기 시의 휴대폰 검증 API는 상태 코드와 로직이 모두 다르기 때문에 아래와 같이 경로를 분리한다:
-
구체적인 HTTP 응답 상태 코드 정하기
-
엔티티의 필드명은 최대한 프론트 팀에서 정해준 이름대로 따라가도록 함
- content -> bio
- username -> email
- ...
-
인증코드 저장 방식
- DB에 인증코드를 저장할 때는 인증코드 테이블에 용도(예: 회원가입, 아이디 찾기, 비밀번호 찾기 등)와 함께 저장한다.
- 만료 시간이 지난 인증 코드는 정기적인 배치 작업을 통해 삭제한다. 배치 작업은 매일 새벽에 실행되도록 설정하여, 만료된 인증 코드들이 테이블에 남아있지 않도록 관리한다.
Column Name | Data Type | Constraints | Description |
---|---|---|---|
id |
BIGINT | PRIMARY KEY, AUTO_INCREMENT | 고유 식별자 |
code |
VARCHAR(10) | NOT NULL | 인증 코드 |
purpose |
VARCHAR(16) | NOT NULL | 인증 코드 용도 (SIGNUP, FIND_ID, RESET_PASSWORD 등) |
verification_target |
VARCHAR(255) | NOT NULL | 이메일 혹은 휴대폰 번호 |
created_at |
DATETIME | NOT NULL, DEFAULT CURRENT_TIMESTAMP | 생성 시간 |
expires_at |
DATETIME | NOT NULL | 만료 시간 |