0

我正在尝试从服务器脚本进行 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 文件中存储散列的用户名/密码,因为任何人都可以下载该文件。

4

1 回答 1

1

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

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

然后在服务器上,设置环境变量。这就是您在 OpenShift 上的操作方式。你可以制作一个是:MY_USERNAME和另一个是MY_PASSWORD什么。process.env.MY_USERNAME然后你用or访问那些process.env.MY_PASSWORD

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

我刚写完这个并考虑了一下,我建议你把它作为一个单独的问题。如果您这样做,请告诉我,我会将其发布在那里,以便您可以接受它,如果它符合您的喜好。你不应该在一篇文章中问两个问题:)

于 2013-07-09T21:21:43.543 回答