프로젝트 1 - Bcrypt
⭐프로젝트 1 - Bcrypt
📕Bcrypt
Bcrypt 라는 라이브러리를 이용해서 비밀번호를 암호화 할 것이다
우리가 저번에 포스트맨을 통해서 정보를 전달했는데 암호화가 되어있지 않기때문에
DB를 관리하는 사람이 비밀번호를 볼 수 있다
그렇게 되면 위험하니 암호화를 해서 DB에 저장되도록 만드는 것이다
npm install bcrypt --save
우선 bcrypt 라이브러리를 다운받자
현재 signup 라우트에서는 바디에서 받아온 정보를 바로 save 하고 있다
그러므로 save하기 전에 암호화를 해야한다
models 폴더에 User.js 파일을 열어보자
여기서 mongoose의 메소드를 사용할 것이다
📘코드 작성
현재 userSchema라는 스키마가 있으니 아래의 코드를 작성하자
1 const bcrypt = require('bcrypt')
2 const saltRounds = 10
3
4 userSchema.pre('save', function(next){
5 var user = this;
6
7 if (user.isModified('password')){
8 bcrypt.genSalt(saltRounds, function (err, salt) {
9 if(err) return next(err)
10 bcrypt.hash(user.password, salt, function (err, hash){
11 if(err) return next(err)
12 user.password = hash
13 next()
14 })
15 })
16 } else {
17 next()
18 }
19 })
갑자기 너무 많은 부분이 생겨 어려울수 있지만 하나씩 차근차근 설명하겠다
📗코드 설명
-
단순히 bcrypt를 사용하기 위해 작성한 코드이다
-
bcrypt 홈페이지에 들어가면 비밀번호를 암호화하는 방법이 나와있다
방법은 salt를 이용해서 비밀번호를 암호화 한다
그러려면 salt를 먼저 생성해야하고 saltRounds는 salt가 몇글자인지 정하는 것이다 -
.pre는 몽고db 메소드인데 'save'하기 전에 실행한다고 생각하면 된다
세이브하기 전에 원하는 코드가 끝나면 넘어가야하기 때문에 next를 매개변수로
넣은것이다 -
10번 코드에서 user.password 부분이 있는데 암호화가 되지 않은 비밀번호를
의미한다
이 부분에서 사용하기 위해서 받아오는 것이다 -
비밀번호가 수정되었을 때에만 아래의 코드를 실행하게 하는 것이다
예를 들어 이메일이나 다른 것들이 수정되었을 때에도 비밀번호를 암호화 하는것은
불필요한 일이기 때문이다 -
salt를 만드는 부분이다
-
에러가 난다면 에러를 리턴하고 종료한다
-
에러가 다지 않는다면 암호화를 진행하는 부분이다
-
9번과 동일하다
-
비밀번호를 암호화하는 부분이다
이렇게 위와 같은 코드이다
자 그럼 포스트맨을 이용해서 암호화가 되고있는지 확인해보도록 하자
데이터가 정상적으로 DB에 들어가지긴 하였다
몽고 DB로 들어가서 암호화가 제대로 되었는지 확인해보자
처음에는 암호화가 되지 않은 상태로 비밀번호가 들어갔었는데
코드를 수정한 후에는 사진처럼 비밀번호가 암호화 된 것을 볼 수 있다
Author And Source
이 문제에 관하여(프로젝트 1 - Bcrypt), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@qnrl3442/프로젝트-1-Bcrypt저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)