2013-08-06 4 views
2

Я хочу сделать приватный доступ к приложению, используя express.js, например .htaccess и .htpasswd, в моем проекте php.Перенаправление после Basic Http Auth Express.js

Я использую http-auth

Вот мой код:

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

Проблема в том, я получаю сообщение об ошибке:

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/-> позвонить маршрутам/index.js –

+0

Да. Вероятно, вы могли бы просто полностью удалить вызов 'res.redirect' и просто вызвать функцию обработчика' routes.index' непосредственно внутри обратного вызова 'basic.apply'? – lmjohns3

+0

Я уже пробовал, но, возможно, я ошибся. basic.apply (req, res, function (имя пользователя) {// ...}, 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);