전체 110

NodeJS 로그아웃 기능 구현

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

Nodejs 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: ..

Nodejs 2024.12.20

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

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

Nodejs 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

Typescript & Express 제너릭을 사용한 응답 처리 방식

웹 개발에서 API를 만들 때, 클라이언트에게 일관되고 구조화된 응답을 전달하는 것이 중요합니다. API 응답을 처리하는 제너릭(Generic)을 어떻게 사용할 수 있는지, 그리고 이를 통해 얻을 수 있는 장점과 단점을 소개하겠습니다.  1. 제너릭(Generic)이란?TypeScript에서 제너릭은 함수, 클래스, 인터페이스에서 타입을 동적으로 정의할 수 있게 해주는 기능입니다. 제너릭을 사용하면, 함수나 클래스의 타입을 호출 시점에 지정할 수 있어, 다양한 데이터 타입을 다룰 때 유용합니다.간단히 말하면, 제너릭은 "어떤 타입을 사용할지 미리 정해놓지 않고, 나중에 그 타입을 정의하겠다"는 의미입니다.2. responseSuccess 함수에 제너릭 사용하기API 응답에서 데이터의 형식을 유연하게 처리..

React & Typescript 2024.12.18