Передача данных между экспресс-маршрутизатором и промежуточным ПО - PullRequest
0 голосов
/ 17 сентября 2018

Я пытаюсь написать экспресс-промежуточное ПО для проверки правильности JWT в заголовке авторизации.Это кажется довольно простым, но я не хочу, чтобы он работал на всех маршрутах (например, не на маршрутизаторах входа / регистрации).

Итак, я хотел бы указать в объявлении маршрутизатора, что для маршрута требуется действительный токен.Например, что-то вроде этого

const controllers = require('../controllers');

module.exports = (app) => {

    app.post('/auth/signup', controllers.auth.signup.post);
    app.post('/auth/login', controllers.auth.login.post);

    app.get('/teams', controllers.teams.get, {requiresToken:true});

};

За исключением того, что .post и .get не принимают третий параметр, а контроллер принимает только (req, res, next) параметры, поэтому я не могу увидеть способПередача стартовых данных для каждого маршрута.Я уверен, что мне не хватает чего-то простого

Ответы [ 2 ]

0 голосов
/ 17 сентября 2018

Вы можете исключить подпоток auth из этого промежуточного ПО, используя регулярное выражение с отрицательным поиском:

const controllers = require('../controllers');

module.exports = (app) => {

    app.use(/\/((?!auth).)*/, yourJwtTokenValidatorMethod); // replace with your jwt token validator middleware

    app.post('/auth/signup', controllers.auth.signup.post);
    app.post('/auth/login', controllers.auth.login.post);

    app.get('/teams', controllers.teams.get, {requiresToken:true});

};
0 голосов
/ 17 сентября 2018

Так я создал промежуточное программное обеспечение для передачи данных в

module.exports = function(options) {
   return function (req, res, next) {
        //write your code here
        // here you can access options variable
        console.log(options.data)
        next();
   }
}

Как вы называете это промежуточное программное обеспечение следующим образом

app.use(middleware({'data' : 'Test'}));

Для использования на основе маршрута

app.post('/userRegistration', middleware({'data' : 'Test'}), (req, res) => {});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...