nodejs中的api认证

时间:2017-11-25 21:50:24

标签: node.js express passport.js

我正在使用passport,jwt在nodeJs中进行身份验证。我已经创建了api.It在postman中工作得很好。但我坚持使用错误消息渲染前端。我的api是:

app.post('/api/login',(req, res, next) => {
        if (req.body.name == '' || req.body.password == '') {
            res.json({
                message: 'Please fill all the fields'
            })
            req.flash('errorMsg', 'Please fill all the fields')
        } else if (!regExp.test(req.body.name)) {
            res.json({
                message: 'Only alphabets and numbers are allowed'
            })
        } else if ((req.body.password.length < 4)) {
            res.json({
                message: 'Password must be 4 character length and more'
            })
        }
        else {

            let user = users[_.findIndex(users, {
                name: req.body.name
            })];
            if (user === undefined) {
                res.status(401).json({
                    message: 'User not defined'
                })

            } else {
                if (user.password === req.body.password) {
                    let payload = {
                        id: user.id
                    };
                    let token = jwt.sign(payload, config.jwtSecret);
                    localStorage.setItem('token', token);
                    res.json({
                        message: "ok",
                        token: token
                    });

                } else {
                    res.status(401).json({
                        message: 'Password did not match'
                    })

                }
            }
        }
    });

我如何在前端显示这些错误。我使用把手作为查看引擎。例如,如果密码不匹配,则在前端显示密码错误消息。我已经设置了使用护照jwt策略的中间件。

1 个答案:

答案 0 :(得分:0)

  

“我如何在前端显示这些错误”

您必须捕获/处理从客户端服务器端抛出的错误,如其未定义所示,您应该使用AJAX请求并处理作为响应发送的错误(由状态代码标识)你的服务器端。

然后,您可以显示一个警告框,说明发生的错误。下面是使用查询ajax http://api.jquery.com/jquery.ajax/

时的情况示例
$.ajax("www.yourapplication.com/api/login", {
    dataType:"JSON"
    data: { password=password, name='example' }
}).succes(function (result) {
    // redirect to authenticated page
}).error(function (jqXHR, textStatus, errorThrown) {
    alert('Error message');
});