박민정

[feat] Password Encryption

...@@ -33,6 +33,9 @@ app.post('/register', (req, res) => { ...@@ -33,6 +33,9 @@ app.post('/register', (req, res) => {
33 33
34 const user = new User(req.body) // req.body에 User의 정보를 저장 34 const user = new User(req.body) // req.body에 User의 정보를 저장
35 35
36 + // 비밀번호 암호화
37 +
38 +
36 // mongoDB에서 오는 메서드. 정보들이 user model에 저장 39 // mongoDB에서 오는 메서드. 정보들이 user model에 저장
37 user.save((err, userInfo) => { 40 user.save((err, userInfo) => {
38 // 만약 에러가 나면, json형식으로 success:false를 보내주고, 에러메시지를 보내줌 41 // 만약 에러가 나면, json형식으로 success:false를 보내주고, 에러메시지를 보내줌
......
1 // monggoDB Model and Schema 1 // monggoDB Model and Schema
2 const mongoose = require('mongoose'); 2 const mongoose = require('mongoose');
3 - 3 +// bcrypt 가져옴
4 +const bcrypt = require('bcrypt')
5 +// bcrypt 사용하기 위해 salt를 생성하고 그걸 이용해 암호화 시킴
6 +const saltRounds = 10 // salt를 몇글자 할 건지
4 7
5 const userSchema = mongoose.Schema({ 8 const userSchema = mongoose.Schema({
6 name:{ 9 name:{
...@@ -32,6 +35,30 @@ const userSchema = mongoose.Schema({ ...@@ -32,6 +35,30 @@ const userSchema = mongoose.Schema({
32 } 35 }
33 }) 36 })
34 37
38 +// index.js의 app.post('/register', (req, res)에 있는
39 +// user model에 user 정보를 저장하기 전에 무엇을 한다는 것
40 +// function( next )를 해서 얘네가 끝난 다음에 다음걸 실행해라~
41 +userSchema.pre('save', function( next ){
42 + var user = this
43 +
44 + if(user.isModified('password')) // password를 변경할 때만 적용되도록..
45 + {
46 + // 비밀번호 암호화 (https://www.npmjs.com/package/bcrypt 에서 가져옴)
47 + bcrypt.genSalt(saltRounds, function(err, salt) // salt를 만드는 함수
48 + {
49 + if(err) return next(err) // 에러 나면 return err
50 + bcrypt.hash(user.password, salt, function(err, hash) { // bcrypt.hash(암호화되지 않은 pw, salt, function(err, 암호화된 비밀번호))
51 + if(err) return next(err) // 에러 나면 return err
52 + user.password = hash // 성공하면 user.password를 hash로 교체
53 + next()
54 + });
55 + });
56 + }
57 +
58 +
59 +})
60 +
61 +
35 // 만든 스키마를 모델로 감싸줌 62 // 만든 스키마를 모델로 감싸줌
36 const User = mongoose.model('User', userSchema) 63 const User = mongoose.model('User', userSchema)
37 64
......
This diff is collapsed. Click to expand it.
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
11 "author": "mindyeoi", 11 "author": "mindyeoi",
12 "license": "ISC", 12 "license": "ISC",
13 "dependencies": { 13 "dependencies": {
14 + "bcrypt": "^5.0.1",
14 "body-parser": "^1.19.0", 15 "body-parser": "^1.19.0",
15 "express": "^4.17.1", 16 "express": "^4.17.1",
16 "mongoose": "^5.12.12" 17 "mongoose": "^5.12.12"
......