我有这样一条快速路线:
app.get('/', auth.authOrDie, function(req, res) {
res.send();
});
authOrDie
函数定义如下(在我的 auth.js
模块中):
exports.authOrDie = function(req, res, next) {
if (req.isAuthenticated()) {
return next();
} else {
res.send(403);
}
});
现在,当用户未通过身份验证时,我想验证 http 请求是否具有 Authorization (Basic) header 。为此,我想使用出色的连接中间件 basicAuth() .
如您所知,Express 构建于 Connect 之上,因此我可以使用 express.basicAuth
。
basicAuth
一般是这样使用的:
app.get('/', express.basicAuth(function(username, password) {
// username && password verification...
}), function(req, res) {
res.send();
});
但是,我想像这样在我的 authOrDie
函数中使用它:
exports.authOrDie = function(req, res, next) {
if (req.isAuthenticated()) {
return next();
} else if {
// express.basicAuth ??? ******
} else {
res.send(403);
}
});
******
如何使用正确的参数调用 basicAuth 函数(req?res?next?...)。
谢谢。
最佳答案
调用 express.basicAuth
函数会返回要调用的中间件函数,因此您可以像这样直接调用它:
exports.authOrDie = function(req, res, next) {
if (req.isAuthenticated()) {
return next();
} else {
return express.basicAuth(function(username, password) {
// username && password verification...
})(req, res, next);
}
});
关于node.js - 如何直接调用Connect中间件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14267807/