在节点js和表达js上进行身份验证

时间:2017-04-21 05:41:30

标签: node.js

我使用护照本地策略构建了登录页面身份验证。 users.js 中的部分代码在这里成功..

router.post('/login',
      passport.authenticate('local', {successRedirect:'/', failureRedirect:'/users/login',failureFlash: true}),
      function(req, res) {
        res.redirect('/');
      });

但是我想通过ldap使用我的公司凭证来验证登录,我有自己的模块叫做“ bluepages ”,我已经替换了上面的块,如下所示。

router.post('/login',function(req,res){
    //console.log(req.body);
    res.redirect('/');
    bluepages.authenticate(req.body.username,req.body.password,function(err,verified){
    if(err) console.log(err);
    else {
        if(verified)
            return res.redirect('/');
            //console.log('Success');
        else
            return res.redirect('/users/login');
            //console.log('Invalid Credentials');

    }
});
});

当凭据正确时,我获得'成功'日志,当凭据不正确时,我获得'无效凭据'日志。这是完美的。但我的要求是res.redirect没有指向所需的视图。即使凭据正确,它仍保留在登录页面中。我得到以下错误,我无法解决它。能否帮助我如何指导意见。

_http_outgoing.js:344
    throw new Error('Can\'t set headers after they are sent.');
    ^

Error: Can't set headers after they are sent.

1 个答案:

答案 0 :(得分:0)

嗨,您应该在评论res.redirect('/');

之后删除//console.log(req.body)