我遇到next(err)
无效的问题。它会忽略错误并只加载页面而不是发送HTTP状态代码404。
ldap搜索工作正常,结果看起来像预期的那样。当else语句被命中时,它不会返回错误。
控制台确实在日志中显示failed
app.use(function(req, res, next){
conn.search('dc=foo', opts, function (err, res) {
assert.ifError(err)
var entries = []
res.on('searchEntry', function (entry) {
entries.push(entry.object)
})
res.on('end', function (result) {
conn.unbind(function (err) {
console.log('Disconnecting')
if (entries.length == 1) {
next()
} else {
console.log('fail')
var err = new Error('Permission Denied')
err.status = 404
next(err)
}
})
})
})
})
答案 0 :(得分:0)
我不认为next
是这样的。如果您不希望调用下一个中间件,请不要拨打next(error)
或next()
。改为使用:
if (entries.length == 1) {
next()
} else {
console.log('fail')
return res.status(404).send('Permission Denied')
}