レスポンス-#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
Reference
この問題について(レスポンス-#10 Bcryptを使用してパスワードを暗号化), 我々は、より多くの情報をここで見つけました https://velog.io/@hijw01/리액트-10-Bcrypt로-비밀번호-암호화하기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol