使用带有node.js的请求模块时,如何避免存储用户名/密码

时间:2013-07-09 21:17:37

标签: node.js

我正在尝试从服务器脚本进行WebAPI调用,但我收到了身份验证错误。

这就是我的server.js文件的样子:

var app = require('http').createServer()
  , io = require('socket.io').listen(app)
  , fs = require('fs')
  , moment = require('moment')
  , request = require('request'); //https://github.com/mikeal/request

app.listen(8000, function () {
    console.log('server started');
    doSomethingOnServerStart();
});


function doSomethingOnServerStart()
{
    console.log('Getting something from server');

    request.get({
        url: 'http://localhost:63213/Api/MyAPI/GetSomething',

    },
        function (error, response, body) {
            console.log(response.statusCode);
            if (response.statusCode == 200) {

                console.log('data received from server');

            } else {
                console.log('error: ' + response.statusCode);
                console.log(body);
            }
        });

}

我想避免在server.js文件中存储散列的用户名/密码,因为任何人都可以下载该文件。

1 个答案:

答案 0 :(得分:1)

要解决在server.js文件中存储散列用户名/密码的问题,这是我提出的解决方案。创建一个名为local.config.js的文件,该文件是设置所有process.env变量的模块。确保您的.gitignore(或与您的SCM等效的任何内容)将忽略所有local.*的文件(例如),因此它也不会进入您的版本。

然后,您需要确保只在本地运行时才加载它。因此,在服务器上创建一个环境变量(或找到已经在那里的变量),只有在您没有在本地运行时才存在。如果process.env.OPENSHIFT_APP_NAME的属性(例如)不存在,那么您必须运行本地,在这种情况下需要local.config.js并从中设置环境变量。

然后在服务器上设置环境变量。这就是你do it on OpenShift的方式。你可以制作一个:MY_USERNAME和另一个MY_PASSWORD或者其他东西。然后,您可以访问process.env.MY_USERNAMEprocess.env.MY_PASSWORD

这种方法对我有用,我相信很多人这样做是为了保护API密钥和秘密。

我刚刚输入这个并考虑过它我会建议你把它作为一个单独的问题。如果你这样做,请告诉我,我会在那里发布,所以你可以接受它,如果你喜欢它。你不应该在一篇文章中提出两个问题:)