Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript bcryptjs未登录,但我可以注册用户_Javascript_Node.js_Bcrypt - Fatal编程技术网

Javascript bcryptjs未登录,但我可以注册用户

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 =

我是一个Nodejs新手,我创建了一个简单的登录/注册API。我使用bcryptjs作为我的密码。我正在邮递员上测试我的API,我可以注册一个新用户。当我使用错误的电子邮件登录时,我会收到正确的消息。我的问题是,当我尝试使用正确的电子邮件/密码登录时,我没有得到任何响应。这是我的密码

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)}`