본문 바로가기
공부/nodejs

비밀번호 암호화 하기 Bcrypt

by 매일삼겹살 2021. 6. 13.
반응형

 

terminal 

npm install bcrypt --save

//index.js
const mongoose = require('mongoose');
const bcrypt = require('bcrypt');
const saltRounds = 10
// salt를 이용해서 비밀번호를 암호화 해야한다.
// salt 생성
// saltRounds 란 salt가 몇 글자인지 나타낸다. 
//saltRounds = 10이면 10자리 salt를 이용해서 비밀번호를 암호화 한다.

//register route
  const user = new User(req.body)
  //유저 정보가 저장되기전 여기서 아래 User.js의 아래 코드가 실행된다.
  user.save((err, userInfo) => {
    if(err) return res.json({ success : false, err })
    return res.status(200).json({
      success: true
    })
  })
})
//User.js
//mongoose에서 가져온 메서드 유저 정보를 저장하기 전에 함수 실행
userSchema.pre('save', function( next ){
    var user = this; //위 userSchema를 가리키는 것

    //사이트를 이용하다 보면 사용자 정보를 바꿀때가 있다.
    //바꿀 때마다 암호화 됨 그래서 아래 조건을 둔다. 패스워드가 변경될 때만
    if(user.isModified('password')){
        //비밀 번호를 암호화 시킨다.
        bcrypt.genSalt(saltRounds, function(err, salt){ //genSalt salt를 가져온다.
            if(err) return next(err) //에러

            bcrypt.hash(user.password, salt, function(err, hash){
                if(err) return next(err) //에러
                user.password = hash //성공 시 비밀번호를 hash로 바꿈
                next()
                //user.password : 사용자가 입력한 비밀번호
                //hash 암호화된 비밀번호
            })
        })
    }else{ // 비밀번호를 바꾸는 게 아닐 때는 next()
        next()
    }
})

 

아래 사이트에서 bcrypt의 사용법이 나옴

 

bcrypt

A bcrypt library for NodeJS.

www.npmjs.com

 

그리고 이제 데이터를 집어넣고 암호화가 되었는 지 테스트 해보자

포스트맨에서 데이터를 집어 넣어줌

 

그다음 몽고디비 사이트에서 들어간 데이터를 봐보자

암호화가 된걸 확인할 수 있다.

 

 

728x90

'공부 > nodejs' 카테고리의 다른 글

Auth 기능  (0) 2021.06.13
로그인  (0) 2021.06.13
비밀 설정 정보 관리  (0) 2021.06.13
nodemon  (0) 2021.06.12
클라이언트로부터 데이터 받기 postman  (0) 2021.06.12

댓글