profile image

L o a d i n g . . .

비크립트 설치

npm install bcrypt --save


index.js에서 post로 값이 들어오고 save전에
User.js에서 유저 스키마를 가져와 암호화 해줄 수 있는 pre()를 생성해준다

bcrypt

A bcrypt library for NodeJS.. Latest version: 5.0.1, last published: a year ago. Start using bcrypt in your project by running `npm i bcrypt`. There are 3434 other projects in the npm registry using bcrypt.

www.npmjs.com

npmjs에 있는 bcrypt 예시를 참고하여 salt를 이용해 암호화 진행

const bcrypt = require('bcrypt');
const saltRounds = 10;

userSchema.pre('save', function (next) {
    var user = this;
    bcrypt.genSalt(saltRounds, function (err, salt) {
        if (err) { return next(err) };
        bcrypt.hash(user.password, salt, function (err, hash) {
            if (err) { return next(err) };
            user.password = hash;
            next();
        })
    })
});


지금은 비밀번호가아닌 User정보가 변경될 때마다 (이메일등을 바꾸더라도) 바뀌는 코드다.
그렇기 때문에 조건문을 하나 더 추가해주었다



userSchema.pre('save', function (next) {
    var user = this;

    if (user.isModified('password')) {

        bcrypt.genSalt(saltRounds, function (err, salt) {
            if (err) { return next(err) };
            bcrypt.hash(user.password, salt, function (err, hash) {
                if (err) { return next(err) };
                user.password = hash;
                next();
            })
        })
    } else {
        next();
    };
});

이제 암호화가 되는지 테스트를 해보자


데이터를 전송하고 DB를 확인해보면 이전에 만들어본건 비밀번호 그대로 들어오지만 암호화 시킨 비밀번호는 salt까지 추가되어서 들어온 것을 확인할 수 있다


반응형
복사했습니다!