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