Как передать аргументы в промежуточное ПО graphqlHTTP - PullRequest
0 голосов
/ 04 ноября 2019

как передать аргументы в промежуточное ПО graphqlHTTP

Я пытаюсь передать полезную нагрузку маркера заголовка авторизации в промежуточное ПО graphqlHTTP из другого промежуточного ПО верхнего уровня

app.use('/private', (req:Request,res:Response,next:Function) => {

   if(!req.header('Authorization')){
      res.json({
         error:true,
         message:'Authorization bearer required'
      })
   }else{
      const token = Buffer.from(req.header('Authorization').split('Bearer ')[1], 'base64').toString('ascii');
      if(decode(token)){
         next();
      }else{
         res.json({
            error:true,
            message:'Authorization bearer required'
         })
      }
   }
});

app.use('/private', graphqlHTTP({
   schema:privateSchema,
   graphiql:false
}))

1 Ответ

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

Обычно данные из промежуточного программного обеспечения устанавливаются в самом запросе.

В вашем сценарии токен может быть установлен как req.token и затем передан в ваш контекст преобразователя graphql, например:

// main.js

app.use(authMidddleware) // sets req.token
app.use(
  '/graphql',
  bodyParser.json(),
  graphqlExpress(req => ({ schema, context: req }))
)

// some-resolver.js
export const myResolver = {
  Query: {
    token: async (parent, { input }, context) => {
      const { token } = context;
      // other stuff
    }
  }
}
...