node.js - 通过用户网格身份验证防止共享 session

标签 node.js session authentication apigee usergrid

我有一个使用 Usergrid 作为后端的 Node 站点。我创建了一个登录表单屏幕,但是当一个用户登录时,会显示该用户正在登录该网站上的所有其他用户。如果其他人登录,则会覆盖之前登录的用户。如何防止所有用户共享经过身份验证的 session ?我希望每个用户在浏览网站时都有自己的经过身份验证的 session 。

登录代码:

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"});
                });
            }
        });
    }
});

最佳答案

我认为问题在于您正在使用 Usergrid.Client 对象的一个​​实例来为许多用户提供服务。相反,您应该执行 Usergrid 所做的操作:当用户登录时,您向他们提供 Usergrid access_token。您可以通过 cookie、JSON 数据或您选择的任何方式将其发回。

然后您会期望用户的后续 HTTP 请求将 access_token 包含在 URL 或 cookie 中,或者其他内容中。在每个请求中,您创建一个 Usergrid.Client 的新实例并传入用户的 token ,例如

var client = new Usergrid.Client({'token':'abcd5764adf...');

关于node.js - 通过用户网格身份验证防止共享 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35562915/

相关文章:

javascript - 用jade传递变量时如何检查对象是否存在

javascript - 在 js 中使用自签名证书发出请求(使用来自 npm 的请求 promise )

java - 针对 Active Directory 的 LDAP 身份验证可接受的 SECURITY_PRINCIPAL 格式是什么?

iphone - iOS 应用程序 - 高级登录屏幕

node.js - 赫斯基给出错误 SyntaxError : Use of const in strict mode

javascript - 运行需要 jsfeat 的 JavaScript 程序

安卓 Stackmob : Prompting logged in user information

python - 没有root权限的python中的pam身份验证

php - 成功登录后重新生成 session ID 是否足以防止 session 固定?

php - 重定向到 PayPal 中断 session