Javascript bcryptjs未登录,但我可以注册用户
我是一个Nodejs新手,我创建了一个简单的登录/注册API。我使用bcryptjs作为我的密码。我正在邮递员上测试我的API,我可以注册一个新用户。当我使用错误的电子邮件登录时,我会收到正确的消息。我的问题是,当我尝试使用正确的电子邮件/密码登录时,我没有得到任何响应。这是我的密码Javascript bcryptjs未登录,但我可以注册用户,javascript,node.js,bcrypt,Javascript,Node.js,Bcrypt,我是一个Nodejs新手,我创建了一个简单的登录/注册API。我使用bcryptjs作为我的密码。我正在邮递员上测试我的API,我可以注册一个新用户。当我使用错误的电子邮件登录时,我会收到正确的消息。我的问题是,当我尝试使用正确的电子邮件/密码登录时,我没有得到任何响应。这是我的密码 const express = require("express") const users = express.Router() const cors = require('cors') const jwt =
const express = require("express")
const users = express.Router()
const cors = require('cors')
const jwt = require("jsonwebtoken")
const bcrypt =require('bcryptjs')
const User = require("../models/User")
users.use(cors())
process.env.SECRET_KEY ='secret'
users.post('/register',(req, res)=>{
const today = new Date()
const userData={
first_name: req.body.first_name,
last_name: req.body.last_name,
email: req.body.email,
mobile_no: req.body.mobile_no,
created: today,
active: req.body.active,
password: req.body.password
}
User.findOne({
where:{
email: req.body.email
}
})
.then(user =>{
if(!user){
bcrypt.hash(req.body.password,10,(err, hash) =>{
userData.password =hash
User.create(userData)
.then(user =>{
res.json({status: user.email + ' registered'})
})
.catch(err =>{
res.send('error:' + err)
})
})
}else {
res.json({error: " User already exists"})
}
})
.catch(err => {
res.send('error:'+ err)
})
})
users.post('/login',(req, res)=>{
User.findOne({
where:{
email:req.body.email
}
})
.then(user =>{
if(user){
if(bcrypt.compareSync(req.body.password, user.password)){
let token = jwt.sign(user.dataValues, process.env.SECRET_KEY,{
expiresIn: 10000
})
res.send(token)
}
}else{
res.status(400).json({error: ' User does not Exist'})
}
})
.catch(err =>{
res.status(400).json({error: err})
})
})
module.exports = users;
请帮忙 看起来您没有正确使用bcryptjs。当你登录你的密码时,你给了user.password,我认为这是一个错误
To hash a password:
var bcrypt = require('bcryptjs');
var salt = bcrypt.genSaltSync(10);
var hash = bcrypt.hashSync("B4c0/\/", salt);
// Store hash in your password DB.
To check a password:
// Load hash from your password DB.
bcrypt.compareSync("B4c0/\/", hash);
bcrypt.compareSync("not_bacon", hash);
由于我不知道如何传递req.body.password,我很难帮助您。请
console.log(user.dataValues,process.env.SECRET\u KEY)
并向我们显示我可以保存哈希密码的值;我是一个新手,但我相信问题在这里>>`if(user){if(bcrypt.compareSync(req.body.password,user.password)){let token=jwt.sign(user.dataValues,process.env.SECRET_KEY,{expiresIn:10000})res.send(token)}`