【发布时间】:2020-12-13 09:18:04
【问题描述】:
我收到“需要数据和盐参数”错误。使用 postgresql 的 Express/node js 应用程序。
编辑:我认为我的问题是从客户端正确传递“密码”,因为当我 console.log(password) 它返回 undefined + 上面提到的错误。我不知道如何解决这个问题。
任何帮助或建议将不胜感激。
这是我的 jwtAuth 代码:
const express = require("express");
const router = require("express").Router();
const bcrypt = require("bcrypt");
const pool = require("../../../db");
router.post("/register", async (req, res) => {
try { //
const {email, password, name1, name2} = req.body;
const user = await pool.query("SELECT * FROM userr WHERE email = $1", [email]);
if (user.rows.length !== 0) {
return res.status(401).send("user already exists"); // this works
}
// trouble begins here
//const saltRound = 10;
var salt = await bcrypt.genSalt(10);
var bcryptPassword = bcrypt.hashSync(password, salt);
const newUser = await pool.query("INSERT INTO userr (lastName, firstName, email, passwrd) VALUES ($1, $2, $3, $4) RETURNING *", [name1, name2 , email, bcryptPassword]);
res.json(newUser.rows[0]);
// 5. generating jwt token
} catch (err) {
console.error(err.message);
res.status(500).send("server error");
}
});
module.exports = router;
【问题讨论】:
-
req.body 为空,因此 bcrypt 无法散列和加盐未定义。
标签: node.js postgresql express authentication bcrypt