js认证用户的单个实例



我想只允许一个用户登录的实例。如果我在这台计算机上登录,然后去另一台计算机登录,之前的会话应该被销毁。我该怎么做呢?如何访问所有会话,以便销毁正确的会话或确保会话的userID是唯一的?我所见过的访问会话的唯一文档是关于req.session的,它只适用于当前会话。

实现这一点的典型方法是将用户的会话ID保存在数据库中,并且每当他们登录时,销毁先前存储ID的会话。Sails使用Connect的会话存储来进行会话管理。会话ID暴露为req.sessionID,底层会话存储暴露为req.sessionStore。因此,给定Connect文档中描述的会话存储接口,您可以在登录操作中执行以下操作:

// Destroy the session from the previous login
req.sessionStore.destroy(loggedInUser.currentSessionId, function(err) {
    if (err) {return res.serverError(err);}
    // Save the session ID of the current login
    User.update({id: loggedInUserId}, {currentSessionId: req.sessionID})
    .exec(function(err) {
        if (err) {return res.serverError(err);}
        // Continue your login action...
    });
});

最新更新