비크립트 설치
npm install bcrypt --save
index.js에서 post로 값이 들어오고 save전에
User.js에서 유저 스키마를 가져와 암호화 해줄 수 있는 pre()를 생성해준다
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까지 추가되어서 들어온 것을 확인할 수 있다
반응형
'개발 > Javascript' 카테고리의 다른 글
[Node] Data흐름과 axios, proxy서버 사용하기 (0) | 2022.08.26 |
---|---|
[Node] 로그인,로그아웃 기능 구현하기 (JsonWebToken & cookie-parser & Auth) (0) | 2022.08.25 |
[Node] npm 과 npx (0) | 2022.08.22 |
[Node] Nodemon 설치 (1) | 2022.08.21 |
[Node] BodyParser, PostMan설치 & 회원가입 정보 넘기기 (0) | 2022.08.20 |