Sails.jsauthentication用户的单个实例

我想只允许login一个用户的一个实例。如果我在这台计算机上login,然后去另一台计算机login,应该销毁以前的会话。 我怎样才能做到这一点? 我如何访问所有的会话,所以我可以销毁正确的,或确保会话的用户ID是唯一的? 我所见过的访问会话的唯一文档是关于req.session ,它只针对当前会话。

实现这一点的典型方法是将用户的会话ID保存在数据库中,并且每当他们login时,销毁先前存储其ID的会话。 Sails使用Connect的会话存储进行会话pipe理。 会话ID显示为req.sessionID ,底层会话存储显示为req.sessionStore 。 因此,鉴于连接文档中描述的会话存储界面,您可以在login操作中执行以下操作:

 // 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... }); });