Что является лучшим способом аутентификации некоторых маршрутов на Express 4 Router?

Я использую Express 4, где у меня есть маршрут, защищенный паспортом .js, например:

var media = require('express').Router();

media.get('/', function(req, res) {
    // provide results from db
});

media.post('/', passport.authenticate('bearer'), function(req, res) {
    // This route is auth protected
});

Итак - собирать маршруты сбора должны (в основном) не защищаться для меня, и создавать маршруты/обновления должны. Но для этого требуется, чтобы я передавал паспорт всем файлам маршрутов (пока у меня 7), затем добавьте это как промежуточное программное обеспечение для некоторых из них.

Мне нравится версия, где вы можете сделать что-то вроде этого:

var router = require('./my-router');
app.use('/api/route', passport.authenticate('bearer'));
app.use('/api/route', router);

Но для этого потребуется auth на всех моих маршрутах.

Есть ли лучший способ, чтобы пройти паспорт на всем пути?

Ответ 1

Вы можете разбить маршрутизатор на защищенный/незащищенный и вызвать промежуточное ПО на защищенных маршрутах.

var express = require('express'),
    media = express.Router(),
    mediaProtected = express.Router();

media.get('/', function(req, res) {
    // provide results from db
});

mediaProtected.post('/', function(req, res) {
    // This route is auth protected
});

module.exports = {
    protected: mediaProtected,
    unprotected: media
};

И тогда вы можете сделать

var router = require('./my-router');
app.use('/api/route', passport.authenticate('bearer'), router.protected);
app.use('/api/route', router.unprotected);