[英]For some reason mongoose saves only the password hash instead of all fields
我有以下代碼:
var express = require('express');
const app = express();
const mongoose = require('mongoose');
var bcrypt = require('bcrypt');
const jwt2 = require('jsonwebtoken');
const User = require('./models/user.js');
app.post('/api/login', async function (req, res){
try {
const hashedPassword = await bcrypt.hash(req.body.password, 10);
console.log(hashedPassword);
console.log(await bcrypt.compare('testtest',hashedPassword));
var user = new User({ id: req.body.id, username: req.body.username, password: hashedPassword });
user.save(function (err, User) {
if (err) return console.error(err);
console.log("Saved successfully");
});
// TODO: Implement proper user check!
if (user.username !== 'test' && await bcrypt.compare('testtest', hashedPassword) !== true )
throw TypeError("Bah! Wrong username and password!");
// ----TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO
jwt2.sign({user}, 'secrethere', { expiresIn: '15min'}, (err, token) =>{
res.json({
token
});
});
} catch (err) {
res.status(500).send()
console.log(err);
}
});
我的 user.js:
const mongoose = require('mongoose');
const userSchema = mongoose.Schema({
loginId: String,
firstname: String,
lastname: String,
eMail: String,
password: String,
active: Boolean
});
module.exports = mongoose.model("User", userSchema);
問題是代碼只在數據庫中保存密碼哈希,即使它被定義為保存更多(id,用戶名,密碼)。 我做錯了什么?
您使用“id”和“username”
var user = new User({ id: req.body.id, username: req.body.username, password: hashedPassword });
並且您的架構不包含這些字段
嘗試 :
var user = new User({ loginId: req.body.id, firstname: req.body.username, password: hashedPassword });
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.