Sails.js经过身份验证的用户的单个实例

时间:2014-08-08 09:37:09

标签: node.js session express sails.js

我想只允许一个用户登录的实例。如果我登录此计算机,然后转到另一台计算机登录,则应销毁上一个会话。我怎样才能做到这一点?如何访问所有会话以便我可以销毁正确的会话或确保会话的userID是唯一的?我见过访问会话的唯一文档是req.session,仅适用于当前会话。

1 个答案:

答案 0 :(得分:3)

实现此目的的典型方法是将用户的会话ID保存在数据库中,每当他们登录时,销毁先前存储了ID的会话。 Sails使用Connect's session store进行会话管理。会话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...
    });
});