목록JavaScript/NestJS (15)
끄적이는 개발노트
보안을 위해 회원가입 시 비밀번호 암호화 작업은 필수다. 이 때, 가장 많이 사용하는 암호화 npm이 bcrypt 이다. bcrypt는 단방향 암호화로 복호화가 불가능하지만, 비교함수를 통해 검증이 가능하다. 1. 설치 yarn add bcrypt 2. 암호화 import * as bcrypt from 'bcrypt'; export const hash = async (plainText: string): Promise => { const saltOrRounds = 10; return await bcrypt.hash(plainText, saltOrRounds); }; bcrypt로 hash 되는 값은 매번 다른 값이 생성된다. saltOrRounds 는 2^10번 해싱을 반복한다는 뜻이다. 3. 비교 imp..
이번 포스트에서는 카카오톡 알림톡을 전송해주는 API인 솔라피 사용법에 대해 정리한다. 솔라피를 활용하면 SMS, LMS 등의 서비스도 이용가능하며, 사용법이 매우 간편하다. 1. 사전준비 - 솔라피 회원가입 https://solapi.com/ 세상에서 가장 쉬운 알림톡 문자메시지 플랫폼 - 솔라피 3중 보안으로 안전보장 기존 아이디/비밀번호 방식의 로그인에 더해서 2차 인증 도입으로 해킹 사고로 부터 안전합니다. 발송량에 따라 일일 발송량 제한이 자동으로 조정되어 클라이언트 프로 solapi.com - 카카오톡 채널 개설 및 비즈니스 채널 신청 https://guide.solapi.com/alimtalk/%EC%B9%B4%EC%B9%B4%EC%98%A4%ED%86%A1-%EC%B1%84%EB%84%90..
1. auth module import { Module } from '@nestjs/common'; import { AuthService } from './auth.service'; import { LocalStrategy } from './local.strategy'; import { UsersModule } from '../users/users.module'; import { PassportModule } from '@nestjs/passport'; import { JwtModule } from '@nestjs/jwt'; import { jwtConstants } from './constants'; @Module({ imports: [ UsersModule, PassportModule, JwtModu..
이번 포스트에서는 로그인 구현에서 가장 많이 사용되는 JWT 토큰에 대해 정리한다. 토큰 기반의 인증 시스템은 로그인 토큰을 발급하고, 서버에 요청을 할 때 헤더에 토큰을 담아 유저 인증을 처리하는 방식이다. auth 모듈과 user 모듈은 각각 본인의 프로젝트에 맞게 구성되어 있다는 전제 하에 필요한 코드들만 빼내서 정리한다. 1. 설치 yarn add @nestjs/passport passport passport-local @nestjs/jwt passport-jwt yarn add -D @types/passport-local @types/passport-jwt 2. Jwt strategy auth 디렉토리 레벨에서 strategy 폴더를 만든 후, 아래의 파일을 추가한다. // auth/strate..

이번 포스트에서는 NestJS에서 middleware를 사용하는 방법을 알아본다. Middleware 미들웨어는 라우터 핸들러 전에 호출되는 함수다. 미들웨어 기능은 요청(request) 및 응답(response) 객체 및 어플리케이션의 요청-응답주기에서 next() 미들웨어 함수이다. next 미들웨어 함수는 일반적으로 next 라는 변수로 표시된다. NestJS 미들웨어는 기본적으로 express 미들웨어와 동일하다. 공식 express 문서를 통해 미들웨어의 기능을 알아본다. 미들웨어 기능은 다음 작업을 수행할 수 있다. - 모든 코드를 실행 - 요청 및 응답 객체를 변경 - 요청-응답주기를 종료 - 스택의 next 미들웨어 함수를 호출 - 현재 미들웨어 함수가 요청-응답주기를 종료하지 않으면 ne..

이번 포스트에서는 cats 스키마에 CRUD를 진행하고 확인해본다. 코드에 대한 내용이 이해가 가지 않는다면 NestJS의 기본 사용법 포스트를 보고 오기를 바란다. 1. Create controller // cats.controller.ts import { Controller, Post, Body } from '@nestjs/common'; import { CatsService } from './cats.service'; import { CreateCatDto } from './dto/create-cat.dto'; import { Cat } from './schemas/cat.schema'; @Controller('cats') export class CatsController { constructor(..