반응형
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의 사용법이 나옴
그리고 이제 데이터를 집어넣고 암호화가 되었는 지 테스트 해보자
그다음 몽고디비 사이트에서 들어간 데이터를 봐보자
암호화가 된걸 확인할 수 있다.
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 |
댓글