【问题标题】:passport.socketio's passport "Failed to deserialize user out of session". But passport in my main app (with the same key) deserializes just finepassport.socketio 的护照“无法将用户反序列化出会话”。但是我的主应用程序中的护照(使用相同的密钥)反序列化就好了
【发布时间】:2014-06-22 22:25:49
【问题描述】:

passport.socketio 抛出此错误,同时未能授权用户。

错误:错误:无法将用户反序列化出会话

我已将问题缩小到 passport.socketio 的 /lib/index.js

在第 59 行

  auth.passport.deserializeUser(userKey, function(err, user) {
    if (err)
      return auth.fail(data, err, true, accept);
    ...

它会抛出该错误。调试器告诉我userKey 是有效的,应该反序列化用户。这是我的主应用程序中的护照用于反序列化用户的相同的密钥。 (这是 mongoDB 对象的 ID)。我的主应用程序中的护照在反序列化用户时没有问题。 (details) 所以不知道为什么这仍然会引发错误。

此处传递的userKey 与我的主应用程序中用于反序列化的密钥护照相同。

我已经将userKey 设为全局并将其放入我的主代码中

  passport.deserializeUser(global.userKey, function(err, user) {
    if (err)
      return auth.fail(data, err, true, accept);
    console.log('ok');

这会导致无限循环(因为它在外部 passport.deserialize 内部)但 iut 打印“ok”!,所以我的主应用程序中的护照至少可以使用与 index.js 中的护照相同的东西(passport.socketio \lib\index.js) 不能! .. 出于某种原因。

然后我什至尝试从主应用程序传递护照对象本身

io.set('authorization', require('passport.socketio').authorize({
    passport: passport,
    ...

这实际上不会导致错误!但后来我没有得到socket.handshake 对象。

我没有进一步诊断此问题的想法,并且非常感谢任何帮助。

什么可能导致passport.socketiopassport 没有“反序列化用户退出会话”?

【问题讨论】:

    标签: deserialization passport.js passport.socketio


    【解决方案1】:

    删除了npm_modules,用"every_package":"latest"重新编写了packages.json,所以基本上重新安装了每个包的最新版本。 That fixed it.

    【讨论】:

      【解决方案2】:

      一个问题可能是您在主应用程序中配置了“护照”实例以使用特定的“反序列化用户”实现。在主应用程序中查找您的护照已被初始化的所有地方。 (如果它是像 mean.io 这样的框架,你会在 config/passport.js 中找到它)。
      确保对套接字应用程序中的护照实例进行相同的初始化。像这样将它传递给passportsocketio:

      passportSocketIo.authorize({
              passport: passport,
              cookieParser: express.cookieParser,
              key: 'connect.sid'
              ...
      });
      

      【讨论】:

        猜你喜欢
        • 2015-02-22
        • 2017-07-15
        • 2019-12-09
        • 2019-03-26
        • 2018-03-03
        • 2015-06-17
        • 2016-04-13
        • 2014-11-27
        • 2015-12-22
        相关资源
        最近更新 更多