Passport身份验证中的用户自定义回调始终为false

时间:2016-11-21 22:02:50

标签: express callback passport.js passport-local

我正在尝试使用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响应)。这对我没有任何意义,但我发现代码没有任何问题。

知道这里的问题是什么吗?感谢。

0 个答案:

没有答案