尝试在Express.js Node.js Passport.js中查看所有登录的用户

问题描述 投票:1回答:1

试图查看Express Passport中所有登录用户的所有会话,并希望能够看到当前登录的用户。什么是最好,最快的方法?

我想也许我可以在登录时执行此操作并将用户模型db'online'布尔变量更新为true。然后我可以在Users.find()上检查online = true ...

但是,如果用户注销或会话结束,我将如何检查?

除非有更简单的方法在不写入数据库的情况下执行此操作?

我最终希望用户保持选择退出在线查看的选项。

node.js express mongoose passport.js
1个回答
2
投票

在使用快速会话的情况下(如果存储是默认值:MemoryStore),您可以从req对象获取存储对象和会话数组:

var sessions = req.sessionStore.sessions

例如(对我来说)它看起来像这样:

{
    KT29eOp9XkzFfXWdz_UVUQMI4Qf3VTxE: 
        '{"cookie":{"originalMaxAge":null,"expires":null,"httpOnly":true,"path":"/"},
        "passport":{"user":"5a95b34b52670e19200ec48e"}}',
    WW7BAhNNBbuFUsKQ0dbalgToEEfGES8p: 
        '{"cookie":{"originalMaxAge":null,"expires":null,"httpOnly":true,"path":"/"},
        "passport":{"user":"5a9d56a18149111cf0556991"}}' 
}             

护照道具中的用户值是MongoDB用户集合中用户的_id。

© www.soinside.com 2019 - 2024. All rights reserved.