Passport auth回调而不是重定向

时间:2016-02-29 01:43:41

标签: javascript node.js express passport.js

passport.authenticate('local-register',{
            successRedirect: '/login',
            failureRedirect: '/path_to_greatness',
        })(req, res, next);

我正在编写一个无状态的API,因此上面的方法就像successRedirect不能满足我的需求。但是我还是想使用护照层,我该怎么回电?

1 个答案:

答案 0 :(得分:1)

您可以将回调传递给passport.authenticate,这应该适合各种用例。传递回调时,您必须自己创建会话(假设身份验证成功)。 (docs

这是一个简单的使用示例:

function handler(req, res, next) {
  // assuming we're using a "local" strategy
  passport.authenticate('local', (err, user, params) => {
    if (err) return next(err)
    if (!user) return next(new Error('Authentication Failed'))

    // user is authenticated, create a session
    req.logIn(user, (err) => {
      if (err) return next(err)
      // handle response
      res.status(200).json({ some: 'data' })
    })
  })(req, res, next)
}