Как да се обадя директно на междинния софтуер на Connect?

Имам експресен маршрут като този:

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). За да направя това, бих искал да използвам страхотния мидълуер за свързване 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? ...).

Благодаря.


person Sandro Munda    schedule 10.01.2013    source източник


Отговори (1)


Извикването на функцията 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);
    }
});
person JohnnyHK    schedule 10.01.2013