将用户从护照传递到 socket.io

Pass user from passport to socket.io

我正在使用 passportjs,express 4,socket.io 为了将 passportjs 与套接字连接,我添加了 passport.socketio 和 connect-mongo 作为会话存储。我在许多帖子中看到我必须避免使用 cors。因此,当我在客户端代码中使用时:io.connect('/');,函数的 none 被调用(success/fail)。当我使用 io.connect('http://localhost:8565'); 时,失败函数被调用并显示消息:"No session found"。 商店:

var store = new (require("connect-mongo")(session))({url: "mongodb://localhost/databaseName"});

会话:

var sessionMiddleware = session({
  key: 'your.sid-key',
  secret: 'reallyawesomesecret',
  resave: false,
  saveUninitialized: true,
  cookie: { maxAge: (365 * 24 * 60 * 60) },
  rolling: true,
  store: store
});

Passport.socketio:

io.use(passportSocketIo.authorize({
  cookieParser: cookieParser,
  key: 'your.sid-key',
  secret: 'reallyawesomesecret',
  store: store,
  success: onAuthorizeSuccess,
  fail: onAuthorizeFail
}));

我必须对 "key:'your.sid-key'," 做些什么吗?或者我想念别的东西? Inside function failed error get value false and data.isAuthenticated() is true, but data.user have {logged_in: false}.

实际上问题出在不同的地方,在客户端代码中,我使用 url localhost:port 设置了套接字,当我将其更改为 127.0.0.1:port 时它就解决了。