전체 41

NodeJS 로그아웃 기능 구현

기능 순서 사용자가 로그인을 하면 Token 테이블에 Token을 저장한다만약 이전에 로그인 했었던 기록이 있다면 해당 행(Row) 는 삭제하며 새로운 Token으로 행을 추가한다 사용자가 보내는 모든 요청에는 토큰을 검증하는 미들웨어로 올바른 토큰인지 ( 인증 / 인가 ) 확인사용자가 로그인 이후 1시간이 지나 토큰이 만료 되었다면 미들웨어에서 특정 행을 삭제하여 새롭게 로그인을 하도록 유도 로그아웃 시에는 토큰을 저장했었던 행을 삭제하여서 사용자가 특정 토큰으로 서버에 요청을 보낼 수 없도록 수정 예외토큰이 없는 상태로 요청을 보낸다면 ? [ OK ]토큰이 있지만 해당 토큰이 토큰 테이블에 없다면 ? [ OK ]토큰이 있고 토큰이 테이블에도 있지만 만료 되었다면 ? [ OK ]두 명의 사용자가 하나의..

Team_Mate/Backend 2024.12.20

NodeJS 회원가입 기능 구현

테이블 정의 및 데이터베이스 설계## 사용자 관리 테이블 설정- [x] **사용자 테이블 (Users)**: 사용자의 기본 정보와 계정 관리를 위한 테이블을 생성합니다. - `id`, `email`, `password`, `username`, `profile`, `bio`, `role`, `created_at`, `updated_at` 필드 추가import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn } from 'typeorm';export interface UserModel { id: number; username: string; email: string; password: string; bio: ..

Team_Mate/Backend 2024.12.20

DBdiagram.io 데이터베이스 ERD 툴

https://dbdiagram.io/homeDBdiagram.io를 선택한 이유웹 애플리케이션을 개발하면서 데이터베이스 설계는 중요한 과정 중 하나인데 특히 프로젝트 규모가 커지고, 여러 사람과 협업을 해야 할 때, 데이터베이스 설계를 명확히 하고 팀원들과 그 내용을 공유하는 것이 필수적임 이 때, DBdiagram.io와 같은 도구가 있다는 것을 알게 되어서 이번 프로젝트에선 해당 도구를 사용하기로 결정함 1. 시각화로 명확한 설계 제공첫 번째 이유는 DBdiagram.io가 제공하는 시각적 설계 덕분임. 데이터베이스 테이블과 관계를 다이어그램 형식으로 시각화하는 것은 설계를 직관적으로 이해하는 데 큰 도움이 됨. SQL 쿼리나 텍스트 기반 ERD(Entity-Relationship Diagram)만..

Team_Mate/Scheme 2024.12.19

Postgresql TypeORM으로 마이그레이션 하기

마이그레이션 이유TypeORM은 TypeScript와 완벽하게 호환되어, TypeScript의 장점을 온전히 누릴 수 있다고 공식 문서에 적혀있다...  개발자가 데이터베이스와의 연결을 관리하는 데 필요한 노력을 줄여주는데 SQL 쿼리를 작성하는 대신, TypeORM의 메서드를 사용하면 데이터베이스를 조작할 수 있다. 또한, TypeORM은 자동으로 SQL을 생성하므로, 복잡한 쿼리 작성의 부담을 덜어주며, 개발 속도를 크게 향상 시켜주기 때문에 TypeORM을 적용하려고 하고 있다.TypeORM을 기존 코드에 적용하려면 데이터베이스 연결 설정 및 엔티티 정의를 추가해야 합니다.# 패키지 설치npm install typeorm reflect-metadata pgTypeORM 설정TypeORM의 데이터 소..

Nodejs 2024.12.19

백엔드 작업 순서

대략적인 작업 순서 [ 백엔드 ]## 백엔드 구현 순서- [ ] **기본 환경 설정** - 프로젝트 초기화 (NestJS 설정, 필요한 라이브러리 설치) - 데이터베이스 설계 (예: PostgreSQL, MongoDB 등) - [] 사용자 테이블 - 게시글 테이블 - 댓글 테이블 - 태그 테이블- [ ] **사용자 관리 기능** - [ ] 회원 가입/로그인 API: 이메일 인증, JWT를 이용한 세션 관리 - [ ] 프로필 관리 API: 사용자 정보 수정, 비밀번호 변경 - [ ] 소셜 로그인 API: OAuth2 (Google, GitHub 등)- [ ] **콘텐츠 관리 (글 작성 및 수정)** - [ ] 글 작성/편집 API: 글의 제목, 본문, 태그, 카테고리 등 저..

Team_Mate/Scheme 2024.12.19

Nodejs PostgreSQL 연동

필요한 패키지 설치npm install pgnpm install @types/pg --save-dev폴더 구조 설계src├── controllers│ └── authController.ts├── db│ └── index.ts // PostgreSQL 연결 설정│ └── userModel.ts // 사용자 관련 데이터베이스 쿼리 ( Model )├── middlewares│ └── authMiddleware.ts├── utils│ └── bcryptConfig.ts│ └── jwtConfig.ts├── app.ts└── .envPostgreSQL 연결 설정# db/index.tsimport dotenv from 'dotenv';dotenv.config();im..

Nodejs 2024.12.18

JWT, Bcrypt 예제

로그인 기능을 구현하기 위한 주요 단계npm install express jsonwebtoken bcryptjs body-parsernpm install @types/express @types/jsonwebtoken @types/bcryptjs @types/body-parser --save-dev 로그인 기능 구현 시에 필요한 라이브러리 / 패키지 설치 CORS & bodyParser 설명 생략 ... .토큰 생성 및 토큰 검증// jwtConfig.tsimport jwt from 'jsonwebtoken';const JWT_SECRET = process.env.JWT_SECRET || 'your-secret-key'; // 비밀 키// JWT 생성 함수export const generateToken =..

Nodejs 2024.12.18