Bycrypt는 현업에서 가장 많이 사용한다고 한다. 나도 종종 사용했는데 많은 알고리즘 중에 이것이 선택되고 있는지 알아보고 기록해두려고 한다. bcrypt? 1999년 USENIX에서 발표한 Blowfish 암호를 기반으로 Niels Provos와 David Mazières가 설계한 단방향 해싱 함수라고 한다. 단방향 해시 함수? 해시 함수는 입력값을 문자와 숫자를 임의로 나열한 일정한 길이의 다이제스트(Digest) 형태로 변환시켜준다. 다이제스트란, 해시 함수를 통해 생성된 암호화된 메시지이다. 이를 단방향으로 암호화하고 복호화는 불가능해 원본을 알 수 없게 하는 것이 단방향 해시이다. 패스워드를 바로 데이터베이스에 저장하지 않고 다이제스트를 저장하는 것이 보편화되었다. salting과 키 스트레..
전체 글
이전에 express를 사용할 때도 jwt를 사용해 토큰을 생성하게 만들었었다. 이번에 NestJS를 공부하면서 반가운 jwt를 적용해 보려고 한다. 설치 모듈$ yarn add @nestjs/jwt @nestjs/passport passport passport-jwt총 4가지를 yarn add를 통해 다운로드하였다.여기서 passport도 함께 다운로드하였는데 이는 다음에 얘기할 거고 여기서는 토큰을 발급받는 과정만 적어보려고 한다.passport.js여권이라는 이름과 같이 서버에서 사용자를 인증하기 위해 사용하는 Node.js용 미들웨어이다. JWT 모듈 등록// auth.module.ts@Module({ imports: [ PassportModule.register({ defaultStrat..
예를 들어 게시물을 하나 만들 때 조건을 주고 싶다. 제목이 없으면 안 되고 내용이 없으면 안 되고 제목은 무조건 한글이어야 되고... 등등 이런 것을 사전에 확인해주는 것이 파이프다. Pipe란?파이프를 data의 transformation과 validation을 위해 사용된다. 컨트롤러 경우 처리기에 의해 처리된다.@Injectalble() 데코레이터로 주석이 달린 클래스이며 Nest는 메서드가 호출되기 직전에 파이프를 삽입하고 파이프는 메서드로 들어가는 인수를 수신해 동작한다.파이프는 두 가지의 유즈 케이스를 가지고 있다.Data Transformation : 입력 데이터를 원하는 형식으로 변환Data Validation : 입력 데이터를 평가하고 유효산 경우 변경되지 않은 상태로 전달하면 됨. 그..
여태 express 길게 공부해왔다. 자유도는 정말 좋았지만 뭔가 딱딱함? 이 느껴지지 않았다. 그래서 NestJS라는 것을 알고 이를 공부해보려고 한다. 사실 TypeScript 공부도 이를 위한 빌드업이라고 할까...? 우선 NestJS란 뭔지 공식 사이트에서 간단하게 알아봤다.Nest (NestJS)는 효율적이고 확장 가능한 Node.js 서버 측 애플리케이션을 구축하기 위한 프레임워크입니다.이것은 알겠다. 큰 특징은 다음에 있다. - 프로그레시브 자바스크립트 사용- TypeScript로 빌드되고 완벽하게 지원- OOP (객체 지향 프로그래밍 Object Oriented Programming)- FP (함수형 프로그래밍 Functional Programming)- FRP (함수형 반응형 프로그래밍 ..
언제나 코드를 작성해야 할 때 고려해야 되는 것은 재사용성이다. Java와 같이 아주 강한 객체지향 언어와 같이 재사용이 가능한 컴포넌트를 만들게 도와주는 것은 TypeScript에도 존재한다. 이름은 제네릭(Generic)이다. 먼저 들어온 인수를 무조건 반환하는 함수를 만들어보자.function fun(num : number):number { return num;}이는 "any" 타입으로도 작성이 가능하다.function fun(num : any):any { return num;}"any" 타입을 사용한다는 것은 num이 어떤 타입이든 받고 반환한다는 의미에서 제네릭이라 할 수 있다. 하지만 이는 반환을 할 때 본질적인 타입을 잃게 된다. 만약 number타입의 값이 들어온다면 반환은 number가 ..
오늘 지나가다가 아주 신기한 문법을 봐서 적어두려고 한다.예전에 의문이 들었던 게 object의 value 값 자리에 변수 명을 넣어도 됐지만 key 값에는 변수 명을 넣지 못할까?라는 의문을 가졌었다. 그러나 가능했다! 그것은 Computed Property Name 이라는 녀석이다. 사용법은 간단하다."[ ]" 대괄호를 사용하면 된다. 아래 예시를 보자무척 신기하다. 여기에 함수도 넣을 수 있다고 한다. 아직 어떠한 경우에 사용해야될 지 생각은 안 해봤지만 유용하게 쓰일 것 같다는 생각이 든다.ES6의 문법이라던데 아직 모르는 것이 많은 것 같다.