获取对ApolloServer上下文中的请求对象的访问

时间:2019-05-30 23:23:29

标签: apollo apollo-server

我无法弄清楚如何正确访问Apollo Server实例中的已解析请求对象。我似乎遵循有关初始化过程的文档,但是我无法做到这一点。 我的目标是尝试设置基于会话的基本身份验证过程,即在登录解析器成功运行后,我想在用户会话中设置身份验证状态。我可以看到cookie是从我的React客户端和游乐场发送的,请求对象本身已经传递了,但是我不能真正使用它。也许我需要额外的中间件?预先感谢。

这是代码的相关部分。

const sessionConfig = {
  name: 'abc',
  secret: 'muchsecret',
  saveUninitialized: true,
  resave: true,
  store: new FileStore(),
  cookie: {
    httpOnly: true,
    maxAge: Date.now() + (30 * 24 * 60 * 60 * 1000),
  },
};

const middleware = [
  morgan('tiny'),
  cors(),
  session(sessionConfig),
  express.static(process.env.RAZZLE_PUBLIC_DIR),
];

const app = express().use(middleware);

const apolloServer = new ApolloServer({
  playground: { settings: { 'request.credentials': 'include' } },
  typeDefs,
  resolvers,
  context: req => {
    // Logs raw request, req: { IncomingMessage: {...} } etc
    console.log(req);
    /* These are all undefined /*
    console.log(req.headers);
    console.log(req.body);
    console.log(req.session);
    return { models, req };
  },
});

apolloServer.applyMiddleware({
  app,
  path: '/graphql',
});

0 个答案:

没有答案