비밀번호 암호화
POST로 데이터를 등록한 것을 보면 암호화가 되어있지 않아 자칫하면 위험해질 수 있다.
따라서 비밀번호를 암호화하여 관리해야 한다.
기본적인 구조는 salt를 생성하여 hash를 적용하는 것이다.
hash를 적용하여 read를 할때 평문을 알아낼 수 없게 만들면 된다.
다음 코드를 보며 알아보자.
userSchema.pre('save', function(next){
var user = this;
if(user.isModified('password')){
//비밀번호 암호화 시킨다.
bcrypt.genSalt(saltRounds, function(err, salt) {
bcrypt.hash(user.password, salt, function(err, hash) {
if(err) return next(err)
bcrypt.hash(user.password, salt, function(err, hash){
if(err) return next(err)
user.password = hash
next()
})
});
});
}
})
Schema.pte() 메서드는 userSchema를 변경하거나 만들기 전에 실행되는 callback를 정의하는 함수이다.
이번 소스에서는 save를 하기전에 사용되는 callback으로 정의했고 password가 변경될 때만 적용되게 isModified에 passwod를 주어 정의했다.
위와 같은 데이터를 send했을 때
passwod가 hash되어 저장되는 것을 알 수 있다.