小编Kiv*_*tar的帖子

如何使用带护照和快速会话的subscriptions-transport-ws

我正在使用与Express搭配得很好的护照本地策略:

passport.use(localStrategy);
passport.serializeUser((user, done) => done(null, JSON.stringify(user)));
passport.deserializeUser((obj, done) => done(null, JSON.parse(obj)));
app.use(passport.initialize());
app.use(passport.session());
Run Code Online (Sandbox Code Playgroud)

这个localStrategy正在做一个Mongoose调用,以根据他的pubKey获取用户,我想request.user是用这种方式填充的。

我这样设置我的graphql端点:

app.use('/graphql', bodyParser.json(), graphqlExpress(request => ({
  debug: true,
  schema,
  context: {
    user: request.user,
    req: request,
  },
  formatError: (e) => {
    console.log(JSON.stringify(e, null, 2));
    return e;
  },
})));
Run Code Online (Sandbox Code Playgroud)

我的订阅是这样的:

const ws = createServer(app);

// Run the server
ws.listen(settings.APP_PORT, () => {
  console.log(`App listening on port ${settings.APP_PORT}!`);
  // Set up the WebSocket for handling GraphQL subscriptions
  new SubscriptionServer({
    execute,
    subscribe,
    schema,
    onConnect: (connectionParams, webSocket) => {
      console.log(webSocket.upgradeReq); …
Run Code Online (Sandbox Code Playgroud)

passport.js express-session graphql graphql-subscriptions

5
推荐指数
1
解决办法
374
查看次数