NodeJS注销所有用户会话

我很有兴趣closures (注销/注销) nodeJS中的 所有用户会话

req.logout()仅closures用户的当前会话。 但是对于我的安全面板,我想添加closures所有用户会话的选项。 我怎样才能做到这一点?

我正在使用MEAN.JS框架 。 用passport.js库和mongoDB保存会话:

 // Express MongoDB session storage app.use(session({ saveUninitialized: true, resave: true, secret: config.sessionSecret, cookie: { maxAge: 15778476000, httpOnly: true, secure: false }, key: 'sessionId', store: new mongoStore({ db: db.connection.db, collection: config.sessionCollection }) })); 

非常感谢你。

使用connect-mongouserId保存在会话集合中的mongoDB中的String中:

 { "_id" : "J6fsgZ4d1zKp31ml1MRm18YCdlyhvce-", "session" : "{\"cookie\":{\"originalMaxAge\":15778475958,\"expires\":\"2016-05-17T23:47:27.301Z\",\"secure\":false,\"httpOnly\":true,\"path\":\"/\"},\"passport\":{\"user\":\"56420a5a8c6601ce29bbd1c1\"}}", "expires" : ISODate("2016-05-17T12:48:22.049Z") } 

最后,我使用这个代码来删除他所有的会话:

 var mongoose = require('mongoose'), Schema = mongoose.Schema, Session = mongoose.model('Session', new Schema(), 'sessions'); exports.signoutAllSessions = function(req, res) { var socketio = req.app.get('socketio'); var userId = req.user.id; var filter = {'session':{'$regex': '.*"user":"'+userId+'".*'}}; req.logout(); res.redirect('/'); Session.remove(filter,function(err,data){ socketio.sockets.to(userId).emit('user.logout'); }); }; 

而一个API路由调用这个方法。