使用Apollo Server 1.x,可以使用Express中间件读取auth标头并修改上下文对象。有没有办法用Apollo Server 2 beta做到这一点?
Apollo Server 2的优点在于您可以在初始化服务器时创建上下文处理程序。
您可以尝试以下内容:
const { ApolloServer } = require('apollo-server')
const server = new ApolloServer({
typeDefs,
resolvers,
context: ({ req }) => {
const [bearer, token] = req.headers.authorization.split(' ')
const user = getUserByToken(token)
return { user }
}
})
现在,您在每个解析器提供的上下文对象中都有user
。