Node.js 在express中使用passport时请求错误

Node.js 在express中使用passport时请求错误,node.js,express,passport.js,passport-local,Node.js,Express,Passport.js,Passport Local,同时将passport集成到我的代码的登录表单中。在我调用passport.authenticate之前,一切都正常。在请求中,返回了400个错误请求。我做错了什么 策略 passport.use('local.login',new LocalStrategy({ usernameField: 'Email', passwordField: 'Password', },function (email,done) { Schema.Users.findOne({'Email

同时将passport集成到我的代码的登录表单中。在我调用passport.authenticate之前,一切都正常。在请求中,返回了400个错误请求。我做错了什么

策略

passport.use('local.login',new LocalStrategy({
    usernameField: 'Email',
    passwordField: 'Password',
},function (email,done) {
    Schema.Users.findOne({'Email': email},function (err,user) {
        if(err) {
            return done(err);
        }
        if(user==null) {
            return done(null,false,{ message: 'Incorrect username.' })
        }
        if(user.Password!==Password) {
            //console.log('Wrong password');
            return done(null,false,{ message: 'Wrong password' })
        }
        return done(null,user);
    })
}));

passport.serializeUser(function (user,done) {
    done(null,user.id);
});

passport.deserializeUser(function (id,done) {
    Schema.Users.findById(id,function (err,user) {
        done(err,user);
    })
});
内部login.js

router.post('/x',passport.authenticate('local.signup',{
    successRedirect: '/success',
    failureFlash: '/failure'
}));
app.js

let login = require('./login.js');
app.use('/login',login);
HTML



登录哦,我现在明白了,但我可能错了。您已检查数据库中用户的密码是否与前端发送的密码匹配,但您忘记在该函数中传递密码,您在该函数中只有一封电子邮件,因此只需尝试添加密码作为参数:

function (email, password, done) {
Schema.Users.findOne({'Email': email},function (err,user) {
    if(err) {
        return done(err);
    }
    if(user==null) {
        return done(null,false,{ message: 'Incorrect username.' })
    }
    if(user.Password!==password) {
        //console.log('Wrong password');
        return done(null,false,{ message: 'Wrong password' })
    }
    return done(null,user);
})

哦,我现在明白了,但我可能错了。您已检查数据库中用户的密码是否与前端发送的密码匹配,但您忘记在该函数中传递密码,您在该函数中只有一封电子邮件,因此只需尝试添加密码作为参数:

function (email, password, done) {
Schema.Users.findOne({'Email': email},function (err,user) {
    if(err) {
        return done(err);
    }
    if(user==null) {
        return done(null,false,{ message: 'Incorrect username.' })
    }
    if(user.Password!==password) {
        //console.log('Wrong password');
        return done(null,false,{ message: 'Wrong password' })
    }
    return done(null,user);
})

基本上,我没有阅读passport的一部分,它说默认情况下它只接受名为
用户名
密码
的参数,但我试图将其命名为
电子邮件
密码
(注意大写字母
p

基本上,我没有阅读passport中的部分,其中说明默认情况下,它只接受名为
用户名
密码
的参数,但我试图将其命名为
电子邮件
密码
(注意大写字母
p

您是否还可以包括处理post请求的路由?我已经包括处理post请求的路由?您是否可以包括处理post请求的路由?我已经包括处理post请求的路由?这不是问题我在尝试调试自己时删除了密码这不是问题我在尝试调试时删除了密码调试我自己是的,这也是,但是如果不将密码作为参数传递给函数,你就无法在if检查中获取密码,因此你有多个错误,这也是,但是如果不将密码作为参数传递给函数,你就无法在if检查中获取密码,因此你有多个错误