Passport本地返回错误400错误请求与邮递员

时间:2017-02-22 13:18:51

标签: passport.js passport-local

我每次使用本地护照时都会收到400 Bad Request错误。请告诉我我做错了什么。

我正在尝试使用邮递员调用我的/登录路线,但每次我收到400错误请求的错误

以下是我的代码:

passport.use(new LocalStrategy(
{
    email:'email',
    password:'password'
},
function(email, password, done){
    adminModel.getAdmin(email, function(err, admin){
        if(err){ return done(err);}
        if(!admin){
            return done(null, false, {message: 'Invalid Username.'});
        }
        adminModel.comparePassword(password, admin.password, function(err, isMatch){
            if(err){return done(err);}
            if(isMatch){
                return done(null, admin);
            }else{
                return done(null, false, {message: 'Invalid Password'});
            }
        })
    });
}
));

passport.serializeUser(function(admin, done){
    done(null, admin._id);
});

passport.deserializeUser(function(id, done){
    adminModel.findById(id,function(err, admin){
        done(err, admin);
    });
});
router.post('/login', passport.authenticate('local'),function(req, res){
res.send(req.body);
});

1 个答案:

答案 0 :(得分:3)

根据您的说法,我们无法确定,但我会说,HTTP Bad Request中的九个来自passport-local中的this row,即。请求不包含凭据。

显然,当您定义了以下内容时,您已尝试告知包含凭据的字段为emailpassword

{
    email:'email',
    password:'password'
}

中间件的这些选项为not supported。你应该通过

{
    usernameField: 'email',
    passwordField: 'password'
}

代替。

另一个常见原因是没有使用body-parser,或者您从Postman发送的请求未定义与数据匹配的正确标头。