Node.js 在express graphql上下文中未定义request.session.user

Node.js 在express graphql上下文中未定义request.session.user,node.js,reactjs,express,graphql,apollo-server,Node.js,Reactjs,Express,Graphql,Apollo Server,我正在构建一个使用Node/Express和Graphql的应用程序。我们将此模块用于graphql server express,并且使用express会话将用户维护到request.session中。在我们开始考虑保护我们的查询(用户需要在咨询之前进行身份验证)之前,一切都很正常 当我们使用Graphiql时,我们的设计是完美的,但是,在应用程序内部,会话根本不包含登录的用户。已经调试了很多次,用户出现在会话中,但GraphQlExpress一直说没有。以下是我的配置: app.use('/

我正在构建一个使用Node/Express和Graphql的应用程序。我们将此模块用于graphql server express,并且使用express会话将用户维护到request.session中。在我们开始考虑保护我们的查询(用户需要在咨询之前进行身份验证)之前,一切都很正常

当我们使用Graphiql时,我们的设计是完美的,但是,在应用程序内部,会话根本不包含登录的用户。已经调试了很多次,用户出现在会话中,但GraphQlExpress一直说没有。以下是我的配置:

app.use('/graphql', bodyParser.json(), graphqlExpress(request => ({
schema,
context: { user: request.session.user })));
登录后,我的express会话设置如下:

const user = employee.dataValues;
      request.session.user = user;
除了我尝试参考graphql上下文(该上下文不包含会话中的用户)外,所有操作都运行得很好:

allCandidates: {
type: new GraphQLList(CandidateType),
resolve(_, args, context) {
  return protect(context, () => Candidate.findAll());
}},
同样,route/graphiql工作得很好。但是/graphql没有。我的客户端正在使用React和Apollo Graphql

你们有什么意见吗


谢谢

听起来很奇怪,可能不是来自
expressgraphql
。你能发布保护功能代码吗?嗨@whitep4nther。。。protect函数就是这样的:
constprotect=(context,…fn)=>flow([isAuthenticated,…fn])(context)我所做的就是使用Lodash“Flow”函数按顺序处理所有函数调用。但是,问题出在resolve函数内部。context属性未定义,因此我的protect函数将始终认为用户未经过身份验证。还没有找到解决问题的好方法:(听起来很奇怪,可能不是来自
express graphql
。你能发布保护函数代码吗?Hi@whitep4nther…保护函数就是这样:
const protect=(context,…fn)=>flow([isAuthenticated,…fn])(context);
我所做的就是使用Lodash“Flow”函数按顺序处理我的所有函数调用。但是,问题出在resolve函数内部。上下文属性未定义,因此我的protect函数将始终认为用户未通过身份验证。尚未找到解决问题的好方法:(