-
MERN 기본파일 만들기 - 4)회원의 비밀번호 hash코드로 숨기기(bcrypt)NODE.JS 2021. 5. 13. 13:19
회원의 비밀번호 같은 정보는 mongodb에서 직관적으로 노출되면 안되기 때문에
bcrypt를 이용해서 숨겨진 상태에서 노출되도록 지정한다.
다음의 사이트에서 사용법을 확인할 수 있다.
https://www.npmjs.com/package/bcrypt
bcrypt
A bcrypt library for NodeJS.
www.npmjs.com
npm install bcrypt --save 를 먼저 해주고 ,
register 파트에서 사용자save를 해주기 전에
비밀번호를 bcrypt해서 저장하도록 설정해줄것이다.
user.save하기전에 무언가 실행되도록 설정한다.
User.js에 다음과 같은 부분을 추가해준다.
const mongoose = require('mongoose'); const bcrypt = require('bcrypt'); const saltRounds = 10; //저장하기전에 처리할 문제를 처리한다(비밀번호와 같은 개인정보 보호)- 비밀번호 암호화 userSchema.pre('save', function( next ){ var user = this;//유저 이용 //다른 요소가 아닌 패스워드가 수정되거나 처음작성되었을 때(변경되었을 때)만 이 과정을 겪어야 한다. if(user.isModified('password')){ bcrypt.genSalt(saltRounds, function(err, salt){//salt 생성 if(err) return next(err);//에러가 생기면 아무것도 하지않고 next로 넘어간다는 것 bcrypt.hash(user.password, salt, function(err, hash){//salt생성 잘 되었으면 암호화 실행(원래 비밀번호(user Schema의 password)와 salt를 넣어준다) if(err) return next(err); user.password = hash;//플레인 비밀번호를 해시로 비밀번호 교체해준다. next(); }) }) }else{ next(); } }); const User = mongoose.model('User', userSchema) module.exports = {User}
'NODE.JS' 카테고리의 다른 글
MERN 기본파일 만들기 - 6) authentification기능 구현하기(middleware사용) (0) 2021.05.13 MERN 기본파일 만들기 - 5)login 기능 만들기(jsonwebtoken 사용) (0) 2021.05.13 MERN 기본파일 만들기 - 3)nodemon 설치하고 private정보 숨기기 (0) 2021.05.13 MERN 기본파일 만들기 - 2) GIT설치하고 연결, SSH 파일 생성하고 등록하기 (0) 2021.05.10 MERN 기본파일 만들기 - 1) node, express 실행하고 mongodb연결하기, BodyParser & Postman 이용해서 register생성 (0) 2021.05.10