在 passport.js 和 express 路由器中使用 next
Use of next in passport.js and express router
我们有这样的 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
如果您不在传递给 passport.authenticate
的回调中使用它,则可以将其省略。然而,passport.authenticate
本身可能需要它来处理某些情况(这是一个猜测,我没有深入研究 Passport 代码来确定)。
因此您可以将代码重写为:
exports.signUp = (req, res, next) ->
passport.authenticate('local-signup', (err, user) ->
...
) req, res, next
return
改进不大。
作为警告:您的代码在某些情况下不会发送响应,即如果 user
为假或空字符串(在那种情况下您只是 return
而不是发送响应)。
我们有这样的 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
如果您不在传递给 passport.authenticate
的回调中使用它,则可以将其省略。然而,passport.authenticate
本身可能需要它来处理某些情况(这是一个猜测,我没有深入研究 Passport 代码来确定)。
因此您可以将代码重写为:
exports.signUp = (req, res, next) ->
passport.authenticate('local-signup', (err, user) ->
...
) req, res, next
return
改进不大。
作为警告:您的代码在某些情况下不会发送响应,即如果 user
为假或空字符串(在那种情况下您只是 return
而不是发送响应)。