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. <실행 결과>
두번째 것을 보면 비밀번호가 해시화돼서 저장된 것을 알 수 있다!