我正在尝试使用Passport和Express进行本地身份验证,我有两个单独的路由登录:一个用于网站,一个用于重定向,一个用于移动应用程序,我想返回一个JSON对象。重定向路由有效。但是,将相同的用户名和密码发布到其他路由会收到登录失败的JSON响应。我的LocalStrategy如下:
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响应)。这对我没有任何意义,但我发现代码没有任何问题。
知道这里的问题是什么吗?感谢。