Passport本地返回错误400邮递员的错误请求 [英] Passport local returns error 400 bad request with postman

查看:13
本文介绍了Passport本地返回错误400邮递员的错误请求的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您好,我每次使用本地护照时都收到400错误请求错误。请告诉我我哪里做错了。

我尝试使用邮递员呼叫我的/登录路由,但每次都收到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);
});

推荐答案

从您给出的内容中不可能肯定地说,但是我会说十有八九HTTP Bad Request来自passport-local中的this row,也就是说,HTTP Bad Request来自passport-local中的this row。该请求不包含凭据。

显然,当您定义了以下内容时,您试图告诉包含凭据的字段是emailpassword

{
    email:'email',
    password:'password'
}
这些选项由中间件not supported提供。您应该通过

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

改为。

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

这篇关于Passport本地返回错误400邮递员的错误请求的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆