Для тех, кому нужен доступ к заголовкам запросов в контексте graphql, попробуйте graphql-fastify
Использование
Create /graphql endpoint like following
const graphqlFastify = require("graphql-fastify");
fastify.register(graphqlFastify, {
prefix: "/graphql",
graphQLOptions
});
graphQLOptions
graphQLOptions можетбыть представленным как объект или функция, которая возвращает параметры graphql
graphQLOptions: {
schema: schema,
rootValue: resolver
contextValue?: context
}
Если это функция, у вас есть доступ к http-запросу и ответу.Это позволяет вам выполнять аутентификацию и передавать области аутентификации в контекст graphql.См. Следующий псевдокод
const graphQLOptions = function (request,reply) {
const auth = decodeBearerToken(request.headers.Authorization);
// auth may contain userId, scope permissions
return {
schema: schema,
rootValue: resolver,
contextValue: {auth}
}
});
Таким образом, context.auth доступен для функций распознавателя, что позволяет вам проверить область действия / разрешения пользователя, прежде чем продолжить.