发送帖子在nodejs中响应

时间:2018-09-24 10:41:00

标签: node.js reactjs mern

我在注册过程中使用bcrypt加密了密码。.这是我的登录代码。.我只想在密码和电子邮件正确的情况下发送响应。如果电子邮件错误,则会发出警报-“失败”。如果一切正确,则会发出警报“成功”。但是在此代码中,如果密码错误,它不会发送任何内容,并且我无法为此使用警报。得到警报?

这是我的reactjs代码.....

fetch("http://localhost:3000/reg/getuser",
{
    method:"POST",
    headers: {
        "Content-Type": "application/json"
    },
    body:JSON.stringify(user)
})
.then(function(response)
{
    return response.json();
})
.then(function(data,props)
{
    if(data.length == 0)
    {
        console.log("damn");
        window.alert('Login Failed!')
    }
    else
    {
        console.log("done");
        window.alert('Login Successful!');
    }
});

这是我的nodejs代码...

router.post('/getuser',function(req,res)
{
    Customer.find({email:req.body.email})
    .then(function(details){
        if(details.length<1)
        {
            res.send(details)
        }
        else
        {
            bcrypt.compare(req.body.password,details[0].password,(err,result)=>{
                if(err){
                    console.log(err)
                }

                if(result){
                    res.send(details)
                }
                // here,when password is wrong...want to send a respond as
                // data.length==0 (in fetch)
            });
        }
    });
});

1 个答案:

答案 0 :(得分:1)

在进行身份验证时,您应该使用正确的状态码。 您可以使用res.status(200).send('loggedin')设置状态代码。

使用以下状态代码:

200 -说成功登录成功

400 401 -表示身份验证失败。

要显示错误消息或重定向用户,请检查ajax请求中的状态码并执行操作。

编辑固定客户端代码段。

客户端

fetch("http://localhost:3000/reg/getuser",
{
    method:"POST",
    headers: {
        "Content-Type": "application/json"
    },
    body:JSON.stringify(user)
})
.then(function(response)
{   
    if (response.status === 200) {
        console.log("ok");
        console.log(response.json());
        window.alert('Login successfull!')
    } else {
        console.log("damn");
        window.alert('Login Failed!')
    }
})
.catch(function() {
    console.log('error handling');
});

服务器

router.post('/getuser',function(req,res)
{
    Customer.find({email:req.body.email})
    .then(function(details){
        if(details.length<1)
        {
            res.status(400).send(details)
        }
        else
        {
            bcrypt.compare(req.body.password,details[0].password,(err,result)=>{
                if(err){
                    console.log(err)
                }

                if(result){
                    return res.status(200).send(details);
                    // return res.status(200).json(details); Use this line to send a json if result is an object.
                }

                return res.status(400).send('login failed');
            });
        }
    });
});