连续登录后未定义 Passport context.req.user (express/graphql)

Posted

技术标签:

【中文标题】连续登录后未定义 Passport context.req.user (express/graphql)【英文标题】:Passport context.req.user undefined after successive logins (express/graphql) 【发布时间】:2018-07-25 11:54:07 【问题描述】:

我正在尝试将 passport.js 添加到 graphql 端点演示

相关代码: https://gist.github.com/Falieson/855abee65621191d78575b7f28b26191#file-passport-ts-L28

loginUser 突变有效,但我希望在第二次登录时

context.req.user 是护照信息,不是未定义

我认为一切都在 server/server.ts 中正确设置

  app.use(bodyParser.json());

  passport.use(Passport.Collection.createStrategy())
  passport.serializeUser(Passport.Collection.serializeUser())
  passport.deserializeUser(Passport.Collection.deserializeUser())
  app.use(
    session(
      secret: 'keyboard cat',
      saveUninitialized: true,
      resave: true,
      store: new mongoStore( mongooseConnection: mongoose.connection )
    )
  );
  app.use(passport.initialize());
  app.use(passport.session());

  const rootValue = 
    me: function (args: any, req: any) 
      return req.user;
    
  
  app.use(
    GRAPHQL_REST,
    bodyParser.json(),
    graphqlExpress((req, res) => 
      // console.log('user: ', req.user);  
      return 
        schema,
        rootValue,
        context: req
      
    )
  )

我想如果你想要一个 repo 来重现,请告诉我。

【问题讨论】:

【参考方案1】:

这个问题与 Passport 或 Express 或我的代码无关,而是 graphql-playground https://github.com/graphcool/graphql-playground/issues/576 的问题

【讨论】:

以上是关于连续登录后未定义 Passport context.req.user (express/graphql)的主要内容,如果未能解决你的问题,请参考以下文章

req.user 注册后未定义

Facebook 登录在用户个人资料中返回“未定义”字段,并且不返回电子邮件。 MEANJs + Passport-facebook

Node + Express + Passport + Mongoose:req.user 未定义

req.user.displayname 未定义 Nodejs + passport = google oauth

Passport + NodeJs + Express 得到“req.user”未定义

成功登录后未呈现角度组件