2016-10-11 2 views
0

Мой экспресс-установка выглядит так:не удается получить экспресс-graphql пройти по паспортной поле пользователя

// Set up router for the /api route. 
const apiRouter = express.Router(); 

// Passport auth only applies to /api endpoints, not static resources 
// or js bundles. 
apiRouter.use(passport.initialize()); 

// (more passport initialization omitted for clarity) 
// (other routes are added here, also omitted) 

// Set up the graphql middleware 
apiRouter.use('/gql', graphql(req => ({ 
    schema, 
    rootValue: { db: req.db, user: req.user, req }, 
})); 

// Now add the router to our app 
app.use('/api', apiRouter); 

Exerything работы, кроме того req.user всегда undefined в моих методах graphql разрешителя. Все другие маршруты, которые добавляются в apiRouter, могут видеть только req.user. Другие атрибуты объекта запроса, такие как req.db, работают повсюду. Это почти похоже на то, что промежуточное программное обеспечение graphql выполнялось до промежуточного программного обеспечения паспорта, но я понимаю, что сначала выполняется первое промежуточное ПО, которое объявлено первым.

+0

Если его возвращающий 'null', а не' undefined', это определенно предполагает, что что-то произошло со значением. Вы уверены, что у бэкэнд есть пользовательское значение, связанное с этим конкретным ответом? 'null' - это значение, возвращаемое откуда-то, иначе оно будет' undefined'. – Dandy

+0

Извините, я должен был сказать undefined. – Talin

+0

Нам нужно будет увидеть, как ваш код обрабатывает запрос, передающий параметры 'req'. Это определенно не пропускает пользователя, но я не вижу ничего в пакете 'graphql', который будет мешать этому. – Dandy

ответ

2

Оказывается, что на стороне клиента fetch() отсутствует опция «credentials:« same-origin »» и, таким образом, не отправляет файлы cookie вниз, из-за чего промежуточное программное обеспечение паспорта не устанавливает поле пользователя.

 Смежные вопросы

  • Нет связанных вопросов^_^