gpt4 book ai didi

node.js - 清除单个用户的所有 session

转载 作者:IT王子 更新时间:2023-10-29 06:06:44 25 4
gpt4 key购买 nike

在我的站点上,我想要一个组织管理员能够重置用户密码的表单。理想情况下,当此重置时,我想从我的 RedisStore 中清除该用户的所有已识别 session ,该 RedisStore 保存 express 和 passport 的 session 数据。有没有人想出办法做到这一点?

最佳答案

您可以通过键从 Redis 中快速找到项目,但由于识别正确 session 所需的数据在值中,因此您需要遍历所有键并查看哪些键属于相关用户。

您可以在登录时将 session ID 存储为按用户名设置,然后当您需要删除 session 时,您只需从列表中获取 key 并删除它们,然后删除列表。

var client = redis.createClient();
// Add the session ID to a set (if not there already)
passport.use(new LocalStrategy({passReqToCallback: true}, function (req, username, password, cb) {
// Do normal login stuff first.
// RedisStore adds 'sess:' to session ID when making it a key
client.sadd("sessions:" + user.username, "sess:" + req.session.id);
cb(null, user);
}));

然后删除 session :

var deleteSessions = function(username, cb) {
client.smembers("sessions:" + username, function(err, sessionIds) {
if (sessionIds.length === 0) return cb();
// Delete all sessions
client.del.apply(client, sessionIds);
// Delete the set containing now deleted session IDs
client.del("sessions:" + username);
cb();
});
};

关于node.js - 清除单个用户的所有 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27947928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com