session - 如何在Everyauth的.findOrCreateUser上获取Express sessionID?

标签 session node.js express socket.io everyauth

我尝试在 Everyauth 的 .findOrCreateUser 上获取Express sessionID

这个问题的背景:

基本上,我尝试集成 Socket.IO 和 Express,并阅读 socket.io and Express. Tying it all together,

我可以从socket.IO范围获取Express sessionID,这对我的项目设计很重要。

io.sockets.on('connection', function (socket) {
    console.log('A socket with sessionID ' + socket.handshake.sessionID 
        + ' connected!');
});

到目前为止一切顺利... 然后,我还需要在 Everyauth 的 .findOrCreateUser 上获取Express sessionID

虽然我是Everyauth的初学者,但在配置如下的everyauth过程后,我成功获取了facebook/google/twitter userID等,例如everyauth.facebook:

everyauth.facebook
    .entryPath('/auth-facebook')
    .appId(conf.fb.appId)
    .appSecret(conf.fb.appSecret)
    .findOrCreateUser(function (session, accessToken, accessTokenExtra, fbUserMetadata)
    {
        console.log("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
        console.log(session); //  <-- if this session object includes sessionID, everything works for me..
        console.log(fbUserMetadata);
        return usersByFbId[fbUserMetadata.id] ||
            (usersByFbId[fbUserMetadata.id] = addUser('facebook', fbUserMetadata));
    })
    .redirectPath('/public/authdone.html');

node.js console.log 如下:

2012-05-24T18:59:31+00:00 app[web.1]: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
2012-05-24T18:59:31+00:00 app[web.1]: { lastAccess: 1337885971024,
2012-05-24T18:59:31+00:00 app[web.1]:   cookie: 
2012-05-24T18:59:31+00:00 app[web.1]:    { path: '/',
2012-05-24T18:59:31+00:00 app[web.1]:      httpOnly: true,
2012-05-24T18:59:31+00:00 app[web.1]:      _expires: Thu, 24 May 2012 22:59:30 GMT,
2012-05-24T18:59:31+00:00 app[web.1]:      originalMaxAge: 14400000 },
2012-05-24T18:59:31+00:00 app[web.1]:   auth: 
2012-05-24T18:59:31+00:00 app[web.1]:    { twitter: 
2012-05-24T18:59:31+00:00 app[web.1]:       { token: 'w0HH4lrzMfeqCLOwd4ncHoPndlyHHqMvyXZM5mGhx8',
2012-05-24T18:59:31+00:00 app[web.1]:         tokenSecret: 'Pzfooy4UVRZpwXvPMJRDFXUX1LdMN59hZwz4ZkBIOc' },
2012-05-24T18:59:31+00:00 app[web.1]:      facebook: 
2012-05-24T18:59:31+00:00 app[web.1]:       { user: [Object],
2012-05-24T18:59:31+00:00 app[web.1]:         accessToken: 'AAACrg6U8ThcBAG4QVDvIM5Qjd2gsjc3jYnHBas7g0w5QcdUJ0cgXXYBBCnmNaz8exdiFLtgXvruoErZCCXX9yitSZB3SIoAB0cKSPguAZDZD' },
2012-05-24T18:59:31+00:00 app[web.1]:      loggedIn: true,
2012-05-24T18:59:31+00:00 app[web.1]:      userId: 1,
2012-05-24T18:59:31+00:00 app[web.1]:      google: 
2012-05-24T18:59:31+00:00 app[web.1]:       { user: [Object],
2012-05-24T18:59:31+00:00 app[web.1]:         accessToken: 'ya29.AHES6ZRq_AFBJNLG92rSuqApI7dmE0fSq12AifJ14nxNNwlJ6OsFo58' } } }

显然,twitter、facebook 和 google 身份验证信息是通过 Express session 适当收集的,但是,

.findOrCreateUser(函数( session ... 不包括Express sessionID

如何在 Everyauth 的 .findOrCreateUser 上正确获取 Express sessionID? 谢谢。

<小时/>

编辑

在这篇文章之后,我尝试实现

everyauth.facebook
    .entryPath('/auth-facebook')
    .appId(conf.fb.appId)
    .appSecret(conf.fb.appSecret)
    .findOrCreateUser(function (session, accessToken, accessTokenExtra, fbUserMetadata)
    {
        console.log("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
        console.log(session);
        console.log(fbUserMetadata);
        return usersByFbId[fbUserMetadata.id] ||
            (usersByFbId[fbUserMetadata.id] = addUser('facebook', fbUserMetadata));
    })
    .findUserById(function (req, userId, callback)
    {
        console.log("######################################");
        console.log(req.sessionID);
    })
    .redirectPath('/public/authdone.html');

但是,.findUserById(function(req,userId,callback)从未被解雇...

最佳答案

好的,

我应该这样做

console.log(session.id);

但是,我认为当我执行 console.log(session); 时会出现整个对象内容;

关于session - 如何在Everyauth的.findOrCreateUser上获取Express sessionID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10744785/

相关文章:

node.js - 在预保存 Hook 中更新

node.js - 为什么每个人都使用 MongoDB 与 Node.Js 和 Express 进行用户身份验证

javascript - express-session 不会删除 mongodb 中的 session

php - session 销毁

php - 这是一个真正的挑战 : why does PHP call shutdown function before sessions are written?

javascript - React v15.0.0 : Since that renderToString is deprecated, 如何进行服务端渲染?

node.js - Flash 消息未在 Node.js 中显示

javascript - Node.js 中如何处理 Session?

node.js - 一个文件监视所有 socket.io 连接

node.js - 我试图使用 "create-proton-app new-App"创建一个 Proton Native 应用程序,但它失败并出现一堆错误