创建用户会话 - NODE js

时间:2017-05-13 10:23:00

标签: javascript mysql node.js session express

我是节点js&的新手。 javascript一般。我有下面的代码来处理登录。我有一个带有客户表的MYSQL数据库。当客户输入他们的用户名和密码时,它会检查它是否存在于数据库中。这部分正在运作。

我现在想要增强此功能,以便它将获取用户名并创建某种会话变量,该变量可以在整个应用程序中使用。我是JS的新手,所以我还不确定哪些内置设施已经存在,或者围绕会话进行最佳实践。

我希望能够在整个应用程序中使用此会话变量,以及后续的注销工具。

有人可以就此向我提出建议,还是指出我正确的方向?感谢。

案例“/ login”:

var body = '';

console.log("user Login ");

request.on('data', function (data) {
    body += data;
});

request.on('end', function () {
    var obj = JSON.parse(body);
    console.log(JSON.stringify(obj, null, 2));
    var query = "SELECT * FROM Customer where name='"+obj.name+"'";
    response.writeHead(200, {
        'Access-Control-Allow-Origin': '*'
    });

    db.query(
        query,
        [],
        function(err, rows) {
            if (err) {
                response.end('{"error": "1"}');
                throw err;
            }
            if (rows!=null && rows.length>0) {
                console.log(" user in database" );
                theuserid = rows[0].customerID;
                var obj = {
                    id: theuserid
                }
                response.end(JSON.stringify(obj));

            }
            else{
                response.end('{"error": "1"}');
                console.log(" user not in database");
            }

        }
    );
});

}

1 个答案:

答案 0 :(得分:1)

可以有多种方式来实现用户会话。

一,你可以使用浏览器cookie,它有许多优点和缺点,你应该阅读它有点看看它如何管理。这还取决于您使用的服务器(express,hapi等)。

二,您可以在后端设置JWT令牌,并将其包含在响应的标头中,然后您可以使用应用程序状态或浏览器的本地存储将该令牌保存在UI上。任何此类需要身份验证的后续请求都应包含此身份验证令牌作为验证标头。

为了更加清晰,您可以查看相关的库(例如护照),这使得此任务变得更加容易。

PS:如果您选择cookie,请确保业务允许或不允许,因为最终用户不喜欢被始终跟踪。 :)