Express Passport身份验证自定义回调中的用户始终为false
我正在尝试使用Passport和Express的本地身份验证,我有两个单独的登录路径:一个用于网站,用于重定向,另一个用于移动应用,我希望返回JSON对象。重定向路由有效。但是,将相同的用户名和密码发布到另一个路由会收到登录失败的JSON响应。我的策略如下:Express Passport身份验证自定义回调中的用户始终为false,express,callback,passport.js,passport-local,Express,Callback,Passport.js,Passport Local,我正在尝试使用Passport和Express的本地身份验证,我有两个单独的登录路径:一个用于网站,用于重定向,另一个用于移动应用,我希望返回JSON对象。重定向路由有效。但是,将相同的用户名和密码发布到另一个路由会收到登录失败的JSON响应。我的策略如下: passport.use('local-signin', new LocalStrategy( {passReqToCallback : true}, function(req, username, password, done)
passport.use('local-signin', new LocalStrategy(
{passReqToCallback : true},
function(req, username, password, done) {
funct.localAuth(username, password)
.then(function (user) {
if (user) {
console.log("LOGGED IN AS: " + user.username);
req.session.success = 'You are successfully logged in ' + user.username + '!';
return done(null, user);
}
if (!user) {
console.log("COULD NOT LOG IN");
req.session.error = 'Could not log user in. Please try again.'; //inform user could not log them in
return done(null, false, { message: 'User not found' });
}
})
.fail(function (err){
console.log(err.body);
return done(err);
});
}
));
这是我使用它的两个地方:
app.post('/login', passport.authenticate('local-signin', {
successRedirect: '/',
failureRedirect: '/signin'
})
);
app.post('/api/login', function(req, res, next) {
passport.authenticate('local-signin', function(err, user, info) {
if (err) {
return res.json(user);
}
if (!user) {
return res.json(true);
}
req.logIn(user, function(err) {
if (err) {
return next(err);
}
return res.json(user);
});
})
(req, res, next);
});
我从“/login”获得成功重定向,但是“/api/login”用“true”回复(如果“user”为“false”,我为其设置的JSON响应)。这对我来说没有任何意义,但我找不到代码有任何问题
你知道这里的问题是什么吗?谢谢。您是否检查了Error和User的值?res.json(User)结果为“false”;我没有检查err(应该检查),也没有尝试从服务器端查看用户。但我本周回到了这个项目,结果发现我在邮递员上错误地格式化了POST数据;oops.您是否检查了Error和User的值??res.json(User)结果为'false';我没有检查err(应该检查),也没有尝试从服务器端查看用户。但我本周回到了这个项目,结果发现我在邮递员上错误地格式化了POST数据;哎呀。