2016-11-22 4 views
1

sessionStore (MongoStore)에서 목록 세션을 검색하고 이전 로그인 세션을 삭제해야합니다. DB에 세션을 저장하기 위해 express-session을 사용하고 있습니다. sessionStore에서 세션 목록을 가져 와서 이전 사용자 세션을 삭제하십시오. NodeJS

var userId = req.query.userid; 
    if (!userId) 
    return res.status(400).send({ 
     message: errorHandler.getErrorMessage('No user found in input request') 
    }); 

    var store = req.sessionStore; 
    var sessionsColl = store.db.collection('sessions'); 

    sessionsColl.find({ 
    'session.passport.user': userId, 
    '_id': { '$ne': req.sessionID } 
    }, function (err, userSessions) { 
    console.log(userSessions); 
    if (userSessions !== null && typeof userSessions._id !== 'undefined') { 
     store.destroy(userSessions._id, function (err, dat) { 
     console.log(dat); 
     });  
    } 
    }); 

그러나 userSessions에서

의 오브젝트 대신에 콜렉션의 객체를 얻고있다 그리고 내가 userSessions 객체입니다에 마지막으로

userSessions object response

답변

1

에서 세션의 목록을 가져올 수있는 방법을 이해할 수 없었다 조금이라도 문제를 해결할 수 있습니다 여기 내 코드입니다

exports.logoutFromPreviousDevices = function (req, res) { 
    var userId = req.query.userid; 
    if (!userId) 
    return res.status(400).send({ 
     message: errorHandler.getErrorMessage('No user found in input request') 
    }); 

    var store = req.sessionStore; 
    var sessionsColl = store.db.collection('sessions'); 

    sessionsColl.find({ 
    // 'session.passport.user': userId, 
    // we are tryin to remove all sessions, you can leave current 
    // '_id': { '$ne': req.sessionID } 
    }, function (err, userSessions) { 
    if (userSessions !== null) { 
     userSessions.toArray(function (a, sessionsData) { 
     sessionsData.forEach(function (element, index) { 
      var data = JSON.parse(element.session); 
      if (element._id !== req.sessionID && req.query.userid === data.passport.user) { 
      store.destroy(element._id, function (destroyerr, dat) { 
       if (destroyerr) 
       return res.status(400).send({ 
        message: errorHandler.getErrorMessage(destroyerr) 
       }); 
       res.jsonp({ status: 'Previous session deleted' }); 
      }); 
      } 
     }); 
     }); 
    } else { 
     res.jsonp({ status: 'No session found' }); 
    } 
    }); 
}; 
관련 문제