Nestjs , Typeorm 에서 Hasing passwords
728x90
비밀번호 단방향 암호화
데이터 베이스에 입력된 비밀번호를 그대로 노출하게 된다면 보안에 큰 결함이 생기게 됩니다. 그래서 입력된 비밀번호를 단방향 암호화를 통해 못생기게 바꿔줄 예정입니다.
먼저 암호화를 하기 전에 Listener 에대해 짚고 넘어가야 합니다.
Listener 는 기본적으로 entity 에 무슨일이 생길때 실행됩니다.
entity 는 nestjs 에서 정의하는 데이터베이스 모델이에요
우리가 원하는것은 Beforeinsert 데코레이터 입니다.
insert 가 되기전에 먼저 실행해주는 데코레이터 입니다.
User class 에 BeforeInsert 부분을 추가합니다.
그리고 password 를 암호화 하기위해 "bcrypt" 를 사용합니다. bcrypt npm
npm i bcrypt
npm i @types/bcrypt --dev-only
다음 코드를 살펴보자면 현재 entity의 password 를 bcrypt.hash 를 사용하여 암호화를 하고 두번째 인자 는 암호화에 사용될 솔트 숫자로 지정되면 지정된 라운드 수로 솔트가 생성되어 사용됩니다.
await this.users.save(this.users.create({email, password, role}));
create 하는 과정에서 비밀번호가 Beforeinsert 를 거쳐 단방향 암호화가 된뒤 save 됩니다.
create 는 객체를 만들기만 하지 데이터베이스에 직접적으로 저장하지 않습니다. 그게 create 와 save 의 차이점 입니다.
다시 회원가입을 해보니 암호화가 잘되어 저장되었네요
728x90
'Side > uber-eats' 카테고리의 다른 글
라이브러리 없이 만드는 JWT - 2 (0) | 2021.06.06 |
---|---|
라이브러리 없이 만드는 JWT - 1 (0) | 2021.06.06 |
Nestjs - User model (0) | 2021.06.01 |
Nestjs - Typeorm Repository 사용하기 (0) | 2021.05.31 |
TypeORM setup 과 Nestjs Config (0) | 2021.05.23 |
댓글
이 글 공유하기
다른 글
-
라이브러리 없이 만드는 JWT - 2
라이브러리 없이 만드는 JWT - 2
2021.06.06 -
라이브러리 없이 만드는 JWT - 1
라이브러리 없이 만드는 JWT - 1
2021.06.06 -
Nestjs - User model
Nestjs - User model
2021.06.01 -
Nestjs - Typeorm Repository 사용하기
Nestjs - Typeorm Repository 사용하기
2021.05.31