sql >> データベース >  >> NoSQL >> MongoDB

NodeJSはすべてのユーザーセッションをログアウトします

    connect-mongoを使用する 、userId セッションコレクションのmongoDBの文字列内に保存されます :

    {
        "_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ルートはこのメソッドを呼び出します。




    1. MongoDBDateTime形式

    2. 正規表現と一致するmongodb$pullが機能しない

    3. ReplicaSet内のMongoDB複数のマスター

    4. 最高のMongoDBGUIはどれですか? —2019アップデート