node js/노드 리액트 기초

[express] bcrypt를 이용하여 비밀번호 암호화하기.

개발중인 감자 2023. 4. 30. 01:01

 

비밀번호를 그대로 DB에 올리면 안전하지 않기 때문에 암호화해서 DB에 올려야한다. 

 

1. bcrypt 설치.  

$ npm install bcrypt --save

 

 

https://www.npmjs.com/package/bcrypt

 

bcrypt

A bcrypt library for NodeJS.. Latest version: 5.1.0, last published: 7 months ago. Start using bcrypt in your project by running `npm i bcrypt`. There are 3879 other projects in the npm registry using bcrypt.

www.npmjs.com

 

위의 사이트에 사용법은 나와있다!

 

2. salt를 이용해서 비밀번호를 암호화해야한다.

const bcrypt = require('bcrypt');
const saltRounds = 10; //salt의 길이 

//next 하면 바로 route user.save로 이동. 
//즉 user.save() 가 실행되기 전에 실행되는 메소드 => pre 메소드 

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) {
                // Store hash in your password DB.
                if (err) return next(err);

                user.password = hash;
                next();
            });
        });
    } else { 
    	next();
    }
    
});

 

3. <실행 결과>

두번째 것을 보면 비밀번호가 해시화돼서 저장된 것을 알 수 있다!