我有一个使用Usergrid作为后端的节点站点。我创建了一个登录表单屏幕,但是当一个用户登录时,会显示该用户已登录到该站点上的所有其他用户。如果其他人登录,则会覆盖以前登录的用户。如何防止经过身份验证的会话在所有用户之间共享?我希望每个用户在浏览网站时都有自己经过身份验证的会话。
登录代码:
app.post("/login", function(req, res) {
if (client.isLoggedIn()) {
console.log("already logged in");
res.send({"status": "success"});
} else {
client.login(req.body.username, req.body.password, function(err) {
logger.debug("After Log In");
if (err) {
logger.error('Login Failed');
logger.error(err);
} else {
logger.debug(client.token);
client.authType = Usergrid.AUTH_APP_USER;
var options = {
method: 'GET',
endpoint: 'users/me'
};
client.request(options, function(err,data) {
if (err) {
console.log(err);
} else {
req.session['current_user'] = data.entities[0];
console.log(data);
console.log("SESSION");
console.log(req.session);
}
res.send({"status": "success"});
});
}
});
}
});
答案 0 :(得分:0)
我认为问题在于您正在使用Usergrid.Client对象的一个实例来为许多用户提供服务。相反,你应该做Usergrid的工作:当用户登录时,你给他们Usergrid access_token。您可以使用cookie或JSON数据或任何您选择的方式将其发回。
然后您会期望来自用户的后续HTTP请求在URL或cookie中包含access_token,或者其他任何内容。在每个请求中,您将创建Usergrid.Client的新实例并从用户传入令牌,例如
var client = new Usergrid.Client({' token':' abcd5764adf ...');