在passport.js和express路由器中使用next

时间:2015-07-07 13:44:55

标签: node.js express passport.js

我们有带护照的express.js路线。我注意到了下一个承诺的使用,但是如果我删除它,我的测试无论如何都能正常工作,对于409和201的响应。任何想法是否真的需要在这样的背景下:

exports.signUp = (req, res, next) ->
  passport.authenticate('local-signup', (err, user, next) ->
    if err
      res.status(409).send
        status: 'Conflict'
        error: 'Benutzername bereits vergeben'
        type: 'warning'
      return
    else if user != false and user != ''
      token = jwt.sign({ user: user }, secret.secretToken, expiresInMinutes: 60 * 60)
      res.status(201).send
        status: 'Created'
        error: 'Benutzer erstellt'
        type: 'success'
        token: token
        user: user
    return
  ) req, res, next
  return

注意:这是coffeescript

1 个答案:

答案 0 :(得分:2)

如果您未在传递给passport.authenticate的回调中使用它,则可以将其删除。但是,passport.authenticate本身可能需要它来处理某些情况(这是猜测,我没有挖掘Passport代码以确保)。

所以你可以将代码重写为:

exports.signUp = (req, res, next) ->
  passport.authenticate('local-signup', (err, user) ->
    ...
  ) req, res, next
  return

这并没有什么改进。

作为警告:您的代码会留下一些未发送响应的情况,即如果user为false或为空字符串(在这种情况下,您只需return而不是发送响应)