Showing
4 changed files
with
32 additions
and
1 deletions
... | @@ -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" | ... | ... |
-
Please register or login to post a comment