我正在尝试从服务器脚本进行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文件中存储散列的用户名/密码,因为任何人都可以下载该文件。
答案 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_USERNAME
或process.env.MY_PASSWORD
。
这种方法对我有用,我相信很多人这样做是为了保护API密钥和秘密。
我刚刚输入这个并考虑过它我会建议你把它作为一个单独的问题。如果你这样做,请告诉我,我会在那里发布,所以你可以接受它,如果你喜欢它。你不应该在一篇文章中提出两个问题:)