-
#10 Bcrypt로 비밀번호 암호화 하기Node.js/[챕터1] 2021. 6. 7. 22:41728x90
[1]Bcrypt 라이브러리 다운
npm install bcrypt --save
[2] 비밀번호 암호화 부분
//index.js app.post('/register', (req, res) => { const user = new User(req.body) //userSchema.pre('save', function() { User 모델에 있는 이게 실행됨 여기부분!! user.save((err, userInfo) =>{ if(err) return res.json({ success: false, err}) return res.status(200).json({ success:true }) }) })
[3] 모델에서 로직추가
models/User.js const bcrypt = require('bcrypt'); const saltRounds = 10; //10자리의 salt userSchema.pre('save', ( next )=> { let user = this; if(user.isModified('password')){ //비밀번호 수정일 때만!! //비밀번호를 암호화 시킨다. bcrypt.genSalt(saltRounds, (err, salt) => { if(err) return next(err); bcrypt.hash(user.password, salt, (err, hash) => { if(err) return next(err); user.password = hash; next(); }) }) } })
10자리를 가지는 saltRounds로 비밀번호를 암호화 시킨다 라는 뜻
ps) 오류발생
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(); }) }) } })
화살표 함수가 아닌 일반 함수로 해야 된다 ㅠㅠ 왜그럴까?
[해결]
userSchema.pre('save', function( next ) { let user = this; if(user.isModified('password')){ //비밀번호 수정일 때만!! //비밀번호를 암호화 시킨다. bcrypt.genSalt(saltRounds, (err, salt) => { if(err) return next(err); bcrypt.hash(user.password, salt, (err, hash) => { if(err) return next(err); user.password = hash; next(); }) }) } else { //비밀번호 변경이 아닐경우!! next(); } })
1. this
- 일반 함수와 화살표 함수의 가장 큰 차이점은 this 입니다.
- 화살표 함수와 일반 함수는 this가 다른 곳을 가리킵니다.
- 화살표 함수의 this는 바로 상위 스코프의 this와 같습니다.
- 일반 함수는 this가 동적으로 바인딩 됩니다. 일반 함수의 this는 내부 함수, 콜백 함수: 전역 객체, 객체의 메소드, 생성자 함수 입니다.
userSchema.pre('save', 함수와 화살표 함수에서
let user = this;
여기서 this가 가르키는게 다르기 떄문에 안됨!!! req 값이 없음!!!
728x90'Node.js > [챕터1]' 카테고리의 다른 글
#12 토큰 생성 with jsonwebtoken (0) 2021.06.07 #11 로그인 기능 with Bcrypt (1) (0) 2021.06.07 [8]#9 비밀 설정 정보 관리 (0) 2021.04.30 [7]#8 Nodemon 설치 (0) 2021.04.29 [6]#7 BodyParser & PostMan & 회원 가입 기능 (0) 2021.04.29