2013-08-06 2 views
2

. 내 PHP 프로젝트에서 .htaccess 및 .htpasswd와 같은 express.js를 사용하여 응용 프로그램에 대한 개인 액세스를 만들고 싶습니다.Basic Http Auth Express.js 후 리디렉션

app.get('/', function(req, res) { 
    basic.apply(req, res, function(username) { 
    res.redirect(routes.index); 
    }); 
}); 

문제는 내가 오류 얻을 수 있습니다 : : 여기

http-auth을 사용하고

내 코드 인증없이

500 TypeError: Object function (req, res){ res.render('index', { title: 'Express' }); } has no method 'indexOf'

app.get('/', routes.index); 

아무런 문제없이 작동합니다.

내 색인을 읽고 res.send()를 사용하는 미들웨어에 대해 생각해보십시오 ... 작동할까요? 또는 무엇을 놓쳤습니까?

답변

2

res.redirect에 대한 인수는 URL 문자열이어야한다고 생각하십니까? 요청 처리기 (function (req, res) {...})를 전달하는 것 같습니다.

+0

아니라, 그런 식으로, res.redirect를 사용하는 것은 좋지 않다라고 생각합니다. 왜냐하면 나는 URL 재 작성이 필요하기 때문이다. http : // url.com/-> routes/index.js를 호출하십시오. –

+0

예. 아마도'res.redirect'에 대한 호출을 완전히 제거하고'routes.index' 핸들러 함수를'basic.apply' 콜백 안에서 직접 호출 할 수 있을까요? – lmjohns3

+0

벌써 시도했지만 어쩌면 틀 렸습니다. basic.apply (req, res, function (username) {// ...}, routes.index); 이것은 오류를 반환하지 않지만 인덱스를 호출하지 않습니다. –

0

내가 사용이 pattern now is different

// Authentication module. 
var auth = require('http-auth'); 
var basic = auth.basic({ 
    realm: "Simon Area.", 
    file: __dirname + "/../data/users.htpasswd" // gevorg:gpass, Sarah:testpass ... 
}); 

// Application setup. 
var app = express(); 

// Setup route. 
app.get('/', auth.connect(basic), routes.index);