отправить сообщение ответить в nodejs - PullRequest
0 голосов
/ 24 сентября 2018

Я использовал bcrypt для шифрования пароля в процессе регистрации. Вот мой код входа в систему. Я хочу отправить ответ только в том случае, если пароль и адрес электронной почты верны. Если адрес электронной почты неправильный, он выдает предупреждение ...fail ".. Если все правильно, выдает предупреждение-" успех ". Но в этом коде, если пароль неправильный, он ничего не отправляет, и я не могу использовать предупреждение для этого .. Как я могу отправить ответ безполучить это предупреждение?

Это мой код реагирования .....

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 голосов
/ 24 сентября 2018

При аутентификации вы должны работать с правильным кодом состояния.Вы можете установить свой код состояния с помощью 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');
            });
        }
    });
});
...