1

http-auth 모듈을 사용하여 익스프레스를 기반으로 node.js 애플리케이션을 만드는 데 문제가 있습니다. 그것은 가능성이 HTTP-인증 라이브러리에 대한 미들웨어를 만들 것node.js HTTP-AUTH가있는 익스프레

이 코드가 있습니다

TypeError: Cannot read property 'headers' of undefined 

: 나는 사이트에 연결할 때

//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(); 
    }); 
}); 

이 적용 후를,이 오류가 발생합니다 이 문제에 대한 해결책이 있습니까 아니면 다른 방법을 사용합니까?

전체 애플리케이션에 대해 다이제스트 인증이 필요합니다.

+0

로거는 무엇입니까? – UpTheCreek

+0

로거는 빠른 응용 프로그램의 인스턴스입니다. –

+0

'http-auth'와'connect'의 통합에 적절한 패턴을 사용하십시오. – gevorg

답변

1

apply()가 요청 객체를 기대하고 있다고 생각합니다 (따라서 헤더를 읽을 수 없음).

이 구문을 시도해보십시오

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

}); 
+0

이것은 작동 할 수도 있지만 내가 원하는 경로를 원할 때 빈 응답이 있습니다. –

+0

apply 함수는 비동기식이므로 적용 콜백에서 next()를 호출해야 할 수도 있습니다. 물론 당신이 묘사하는 것은 무관 ​​한 무언가 일 수 있습니다. – UpTheCreek

+0

@UpTheCreek,'.apply'에 대한 비동기가 전혀 없습니다 ... – Brad

0

그냥 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(); 
    });  
});