FLYAI4 / ArtAPI-FastAPI

프로젝트 API 백엔드 서버 repo
1 stars 1 forks source link

[Back] 서비스 회원가입, 로그인 기능 개발 - feature/account-login #5

Open robert-min opened 7 months ago

robert-min commented 7 months ago

📌 Description

서비스 사용을 위한 회원가입, 로그인 기능을 개발합니다.


🎈 Goal

$\tiny{구체적인\ 산출물을\ 포함한\ 목표를\ 작성해주세요.}$


✏️ Todo

$\tiny{목표\ 달성을\ 위해\ 해야할\ 일을\ 세부적으로\ 작성해주세요.}$

추가 개발 사항(Demo 이후)

robert-min commented 7 months ago

DB 리서치

MySQL

특징

장점

단점

PostgreSQL

특징

참고 : ACID?

장점

단점

비교

현재 프로젝트 기준 데모버전으로 큰 데이터가 들어가지는 않지만, 서비스 이용에따라 사용자 피드백을 저장하는 테이블이 추후 들어가는 등 서비스 확장성을 고려하여 MySQL이 아닌 PostgreSQL 진행

robert-min commented 7 months ago

Session Cookie vs JWT 토큰 리서치

세션 쿠키(Session Cookie):

동작 방식

  1. 사용자가 인증 정보를 제출하면, 서버는 사용자를 인증하고 세션 ID를 생성합니다.
  2. 이 세션 ID는 서버 측에서 관리되는 데이터 저장소(일반적으로 메모리나 데이터베이스)에 저장됩니다.
  3. 세션 ID는 클라이언트에게 쿠키로 전송됩니다. 이후 클라이언트는 모든 요청에 이 세션 ID를 함께 보냅니다.
  4. 서버는 세션 ID를 확인하여 사용자를 인증하고 해당 세션에 저장된 데이터를 사용합니다.

장점

단점:

JWT (Json Web Token):

동작 방식

  1. 사용자가 인증 정보를 제출하면, 서버는 JWT를 생성하여 클라이언트에게 반환합니다.
  2. 이 JWT는 인코딩된 형태로, 클라이언트 측에서 저장되거나 전송됩니다.
  3. 클라이언트가 요청을 보낼 때마다 JWT를 함께 보냅니다.
  4. 서버는 JWT의 유효성을 검증하여 사용자를 인증합니다.

장점

단점

요약

현재 프로젝트 기준 보안 상의 중요한 이슈가 없고, 서비스 확장성을 고려하여 JWT 토큰 인증방식을 사용해서 진행

robert-min commented 7 months ago

DB 인프라 구축

스키마 설정

user_account

-- art 데이터베이스 생성
CREATE DATABASE art;

-- art 데이터베이스로 연결
\c art;

-- user_account 테이블 생성
CREATE TABLE user_account (
    seq BIGSERIAL PRIMARY KEY,
    id VARCHAR(500) NOT NULL,
    password BYTEA NOT NULL,
    name VARCHAR(500) NOT NULL,
    gender VARCHAR(20) NOT NULL,
    age VARCHAR(200) NOT NULL,
    status BOOLEAN NOT NULL DEFAULT TRUE
);

-- user_account 테이블 삭제
DROP TABLE user_account;

-- user_content 테이블 생성
CREATE TABLE user_content (
    seq BIGSERIAL PRIMARY KEY,
    id VARCHAR(500) NOT NULL,
    generated_id VARCHAR(500) NOT NULL
);