2016-01-30 5 views
1

У меня есть это промежуточное программное обеспечение, которое проверяет все маршруты для сеанса пользователя. Это просто, если пользователь вошел в систему, перейдите к следующей функции.Исключить указанный маршрут из промежуточного программного обеспечения

router.use(function(req, res, next){ 
    if(!req.user){ 
     res.redirect('/login'); 
    }else{ 
     res.locals.username = req.user.username; 
     return next(); 
    } 
}); 

Но как его исключить по определенному маршруту? Например, я хочу сделать публичный API в моем приложении. Например, example.com/api/items не должны проверять сеанс входа в систему.

ответ

0

req.originalUrl сообщает, что URL был таким, чтобы вы могли отказаться от своей логики, изучив URL-адрес прямо в вашей функции промежуточного программного обеспечения.

Или вы можете настроить отдельный маршрутизатор для общего пути, который был обработан перед этим маршрутизатором, поэтому, если запрос соответствует маршрутизатору общедоступного пути, тогда он уже будет обработан, и, таким образом, это промежуточное программное обеспечение в более позднем маршрутизаторе не будет называться. Именно так Express ожидает, что у вас будет другое промежуточное ПО для разных путей верхнего уровня - с помощью отдельных маршрутизаторов.

+0

Мое приложение на полпути, я не хочу идти ко второму варианту. Но как «req.originalUrl» помогает в этом случае? –

+0

@ NicholeA.Miler - Что означает «приложение на полпути»? Для отдельного маршрутизатора вы просто ставите свои общедоступные маршруты API в новый маршрутизатор. Это «правильный» способ разработки двух путей с различным промежуточным программным обеспечением и должен занимать всего несколько минут после реорганизации кода. Моя любимая цитата: ** «Всегда есть время, чтобы сделать это, чтобы он работал правильно, но никогда не хватало времени, чтобы сделать это в первый раз». ** Другими словами, найдите время, чтобы сделать это правильно. – jfriend00

+0

Я вижу. Хорошо, я взял тебя. Вы говорите, что do 'router.get ('/ api', function() { // что-то });' перед проверкой подлинности проверки подлинности? –

Смежные вопросы