лучший способ получить доступ к req.body в политике - PullRequest
0 голосов
/ 03 ноября 2018

В настоящее время я работаю над пользовательским плагином, реализующим решение oauth. Я решил реализовать правильную политику, которая перенаправляет входящие сообщения входа во внешнюю службу. Поэтому я должен получить доступ к телу запроса (свойство req.body), что возможно только в том случае, если требуемый анализатор тела включен в качестве промежуточного программного обеспечения. К сожалению, я не смог найти удобный способ включить анализ тела в приложении шлюза. Следовательно, я сделал обходной путь, зарегистрировав правильный маршрут для доступа к базовому объекту expressapp.

 pluginContext.registerGatewayRoute(app => { app.use(express.json()); }

Я не хочу заменять политику простой регистрацией маршрута, потому что я не нашел способа применить другие политики (например, CORS, RATE LIMITER ...) к этому маршруту.

Пожалуйста, дайте мне знать, если я что-то наблюдаю, и есть более простой способ включить разбор тела.

Ответы [ 2 ]

0 голосов
/ 04 ноября 2018

Большое спасибо за ваш полезный ответ. Как и предполагалось, я создал политику bodyParser. Потребовалась лишь небольшая модификация предыдущего ответа: вместо express.json мне пришлось вызвать функцию express.json (), чтобы получить требуемую функциональность промежуточного программного обеспечения.

const express = require('express');
module.exports = {
   name: 'bodyParser',
   policy: (actionParams) => express.json()
};

Теперь работает нормально, и разбор текста разрешен только там, где это действительно необходимо.

0 голосов
/ 03 ноября 2018

да, использование «registerGatewayRoute» будет применять промежуточное ПО для каждого маршрута в EG. Что вы можете сделать, это создать политику парсера тела. Политика в EG - это просто оболочка для промежуточного программного обеспечения ExpressJS, поэтому

, поэтому политика анализатора тела может содержать код, подобный

{
   name: 'bodyparser',
   policy: (actionParams) => express.json()
}

https://www.express -gateway.io / документы / плагины / политики развития /

Теперь просто добавьте эту политику в качестве первой в конвейере, и она должна предоставить req.body для всех маршрутов, проходящих через этот конвейер

...