レスポンス-#10 Bcryptを使用してパスワードを暗号化

17015 ワード

パスワードが見えます!😨



index.js

const express = require('express')
const app = express()
const port = 5000

const bodyParser = require('body-parser');
const {User} = require("./models/User");

//application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({extended: true}));

//applicationjson
app.use(bodyParser.json());

const mongoose = require('mongoose')
mongoose.connect('mongodb+srv://hijw01:[email protected]/myFirstDatabase?retryWrites=true&w=majority', {
}).then(() => console.log('MongoDB Connected...'))
  .catch(err => console.log(err))


app.get('/', (req, res) => {
  res.send('오잉오잉')
})

app.post('/register', (req, res) => {
  //회원가입에 필요한 정보들을 client에서 가져오면
  //그것들을 데이터 베이스에 넣어준다.

  const user = new User(req.body)

  //save를 하기 전 비밀번호 암호화!
  

  user.save((err, userInfo) => {
    if(err) return res.json({ success: false, err})
    return res.status(200).json({
      success: true
    })
  })

})

app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`)
})

Users.js

const mongoose = require('mongoose');
const bcrypt = require('bcrypt');
const saltRounds = 10

const userSchema = mongoose.Schema({
    name: {
        type: String,
        maxlength: 50
    },
    email: {
        type: String, 
        trim: true, //space를 없애주는 역할
        unique: 1 //똑같은 이메일이 없게
    },
    password: {
        type: String,
        minlength: 5
    },
    lastname: {
        type: String,
        maxlength: 50
    },
    role: { //관리자인지 일반유저인지
        type: Number, //0은 일반유저로 지정하고 싶음(다른 숫자는 다른 역할)
        default: 0 //기본값은 0(일반유저)
    },
    image: String,
    token: {
        type: String
    },
    tokenExp: {
        type: Number
    }
})

//save 전 암호화를 해야 함!
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()
    
            })
    
        }) 
    } else {
    
        next()
    
    }
    
})

const User = mongoose.model('User', userSchema) //schema를 model로 감쌈

module.exports = { User } //이 모델을 다른 파일에서도 쓸 수 있게 export

なぜかいつも間違い

+どのように解決するか(どのように解決したか覚えていない)


Postman



MongoDB