1

J'ai un problème avec la création de l'application node.js basée sur express avec module http-auth.node.js Express avec HTTP-AUTH

Il est un possible de créer Middleware pour cette http-auth bibliothèque J'ai ce code:

//Configure Middlewares 
logger.configure(function() { 

    //All output has content type json 
    logger.use(function(req, res, next) { 
    res.contentType('application/json'); 
    next(); 
    }); 

    //Create digest auth middleware 
    logger.use(function(req, res, next){ 
    digest.apply(); 
    next(); 
    }); 
}); 

Après avoir appliqué ce, lorsque je me connecte au site que j'obtenir cette erreur:

TypeError: Cannot read property 'headers' of undefined 

Y at-il une solution à ce problème ou utiliser une autre méthode?

J'ai besoin de digest auth pour toute l'application.

+0

Qu'est-ce que l'enregistreur? Le logger – UpTheCreek

+0

est l'instance de l'application express. –

+0

Utilisez juste le modèle approprié pour l'intégration 'http-auth' avec' connect'. – gevorg

Répondre

1

Je pense que apply() attend l'objet de requête (donc il ne peut pas lire les en-têtes);

essayer cette syntaxe:

digest.apply(req, res, function(username) { 

}); 
+0

Cela pourrait fonctionner, mais quand je veux aller à n'importe quel itinéraire, j'ai une réponse vide. –

+0

La fonction apply étant asynchrone, vous devrez probablement appeler next() dans le rappel apply. Bien sûr, ce que vous décrivez pourrait être quelque chose d'indépendant. – UpTheCreek

+0

@UpTheCreek, Il n'y a rien d'asynchrone à propos de '.apply' ... – Brad

0

Vous devez juste utiliser avec correct pattern:

// Authentication module. 
var auth = require('http-auth'); 
var digest = auth.digest({ 
    realm: "Simon Area.", 
    file: __dirname + "/../data/users.htdigest" 
}); 

// Configure Middlewares 
logger.configure(function() { 
    // Create digest auth middleware 
    logger.use(auth.connect(digest)); 

    // All output has content type json. 
    logger.use(function(req, res, next) { 
    res.contentType('application/json'); 
    next(); 
    });  
});