我想只允许一个用户登录的实例。如果我在这台计算机上登录,然后去另一台计算机登录,之前的会话应该被销毁。我该怎么做呢?如何访问所有会话,以便销毁正确的会话或确保会话的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...
});
});