목록분류 전체보기 (92)
개발일지
토큰 (Token)인증을 위해 사용되는 암호화 된 문자열 토큰 기반 인증 방식사용자가 로그인을 요청하면 서버에서는 어떠한 데이터를 기반으로 인증 가능한 토큰을 생성해 클라이언트에 전달한다. 클라이언트는 요청 시 토큰과 함께 요청하고 서버는 토큰에 대한 유효성을 검사하여 사용자의 인증 여부를 판별한다.토큰 방식은 토큰의 유효성 검증과 유저의 인증을 별도로 분리할 수도 있다. 예를 들어 구글 로그인을 하면 구글 유저 인증 서버에 접근할 수 있는 토큰을 발급해준다. 이 토큰을 다시 구글 유저 인증 서버로 보내 사용자를 인증할 수 있다.jwt는 토큰 유효성을 확인하기 위한 별도의 서버를 거치지 않고도 jwt 토큰 자체를 해석하여 유저를 검증할 수 있도록 한다. 동작 방식사용자..
+) 240907 틀린 개념만 수정했습니다. 쿠키와 세션을 사용하는 이유? HTTP 프로토콜 환경은 stateless한 특성을 가지기 때문에 서버에서는 클라이언트가 누구인지 매번 확인해야한다. 예를 들어 쇼핑몰에 로그인을 했음에도 페이지를 이동할 때마다 계속 로그인을 해줘야하는 문제가 발생한다. 쿠키와 세션을 사용해 이러한 점을 보완할 수 있다. 무상태성 (Stateless)서버는 클라이언트의 이전 상태를 보존하지 않는다. 연결을 끊는 순간 클라이언트와 서버의 통신이 끝나며 상태 정보는 유지되지 않는다. 쿠키 (Cookie)쿠키란?서버가 사용자의 웹 브라우저에 전송하는 작은 데이터 조각이다. 브라우저는 이 데이터 조각들을 저장하고 있다가, 동일한 서버에 재요청할 때 함께 전송한다.서버는 HTTP 요청..
prisma cli 사용 시 이슈 발생prisma에서는 아래와 같이 환경변수를 불러옵니다. // schema.prismadatasource db { provider = "sqlite" url = env("DATABASE_URL") ⭐️} // .envDATABASE_URL="file:./dev.db?timeout=5000" 그런데 앞서 .env 파일을 .env.development , .env.production 으로 파일명을 변경하면서 prisma cli 사용 시 env 파일을 인식하지 못하는 문제가 발생했습니다. 이는 prisma 클라이언트는 기본적으로 .env 파일을 불러오기 때문입니다. dovenv-cli개발 환경에 따라 env 파일을 지정해주기위..
@nestjs/config보통 개발할 때와 배포할 때의 실행 환경이 달라지기 때문에 환경 변수들을 분리하여 관리할 필요가 있습니다. NestJS에서는 dotenv를 내부적으로 활용하는 @nestjs/config 패키지를 제공해줍니다. 이를 이용하여 ConfigModule을 동적으로 생성할 수 있습니다. $ yarn add @nestjs/config --save 환경 변수를 관리하는 env 파일을 생성했습니다. `.env.development` 는 개발 환경에서, `.env.production` 배포 환경에서 사용됩니다. ├── .env.development└── .env.production ConfigModule// app.module.tsimport { ConfigModu..
로그아웃플로우제가 생각한 로그아웃 플로우는 다음과 같습니다.클라이언트에서 로그아웃 api를 요청합니다.DB에 저장된 refresh token을 삭제한 후 결과를 response 합니다.삭제 성공일 경우, 헤더에 있는 access token을 제거합니다. 구현// auth/auth.controller.ts@Delete('sign-out')async signOut() { const userId = 1; const data: SignOutUserDto = { userId, }; return await this.authService.signOut(data);} // auth/auth.service.tsasync signOut(data: SignO..
TSConfig:tsconfig.json: 타입스트립트를 컴파일할 때 필요한 설정들을 관리하는 파일 tsc cmd$ tsc --init: tsconfig.json 파일 생성 $ tsc $ tsc logging.ts: tsconfig.json 파일에 정의된 옵션으로 컴파일 진행 $ tsc -w $ tsc logging.ts -w: ts코드가 수정될 때마다 자동으로 컴파일한 후 js 실행 tsconfig.js 예시outDir : 컴파일 시 js파일이 생성될 경로rootDir : 시작루트 경로ts 파일이 처음 위치한 곳부터 상위 폴더 지정된다.{ "compilerOptions": { "outDir": "./build", ..
Proto:JS는 프로토타입 기반의 언어로 모든 객체들이 상속 받기 위한 템플릿으로 prototype object 를 가진다.상속되는 속성, 메소드들은 객체가 아닌 prototype 속성에 정의 ( __proto__ )즉, JS에서 상속, 코드 재사용 등 OOP을 위해 사용하는 것! Proto 속성JS에서 모든 객체는 Object type을 상속한다.Object.prototype 으로 접근 가능/** Proto */const x = {};const y = {};console.log(x); // __proto__: Objectconsole.log(y); // __proto__: Objectconsole.log(x.toString());console.log(x.__proto__ === y.__proto_..