簡體   English   中英

出於某種原因,貓鼬只保存密碼哈希而不是所有字段

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM