保护API令牌,使我的index.js变为可能吗?

时间:2014-10-11 03:38:04

标签: javascript node.js

所以我构建了一个与Slack交互的html表单。目前我的js代码看起来像这样。

$("#submitemail").click(function(){
    $.post(
            "https://openpgh.slack.com/services/hooks/incoming-webhook?token=MY_SECRET_TOKEN",
            JSON.stringify({'text':'invite request from: '+$("#email").val(),'username':'Slack Inviter','icon_emoji':':raising_hand:'})
    ).success(function(){
                $("#email").val("");
            });
});

如果有人只是从我的html文件中删除它,他们就可以运行一个控制台命令并更改JSON并用大量的废话轰炸我的松散组,直到它们达到API调用限制。

我想知道的是,如果我可以将它存储在我的i​​ndex.js(我使用node.js模板)作为var,然后在html中调用它。

非常感谢任何选项或建议我对此非常陌生。

我的结构是:

Slack App
|_node_modules
| |_express
|_public
| |_index.html
| |_node.svg (idk what this does)
|_.gitignore
|_app.json
|_index.js
|_package.json
|_procfile
|_README.md

我的index.js的代码只是

var express = require('express');
var app = express();

app.set('port', (process.env.PORT || 5000));
app.use(express.static(__dirname + '/public'));

app.listen(app.get('port'), function() {
  console.log("Node app is running at localhost:" + app.get('port'))
});

如果您只想要一个基本的模态w /按钮来点击执行表格并拉动电子邮件,我可以输入我的完整HTML。

1 个答案:

答案 0 :(得分:0)

免责声明:此代码未经测试

你基本上会做这样的事情:

index.js(评论解释我添加的内容):

var express = require('express');
// install request module
var request = require('request');
var app = express();

// make a new route that you can call from the client side
app.get('/getSlackData', function(req, res) {

  //variable to hold your response from slack
  var slackResponse;

  //make the request to slack
  var slackUrl = "https://openpgh.slack.com/services/hooks/incoming-webhook?token=MY_SECRET_TOKEN""
  request(slackUrl, function (error, response, body) {
    if (!error && response.statusCode == 200) {
      slackReponse = response;
    } else {
      console.log(error);
  });
  return slackResponse;
});

app.set('port', (process.env.PORT || 5000));
app.use(express.static(__dirname + '/public'));

app.listen(app.get('port'), function() {
  console.log("Node app is running at localhost:" + app.get('port'))
});

所以我们添加了一个新路由,它基本上是一个可以从客户端调用的API,它将返回你从Slack获得的JSON对象。您几乎可以将客户端代码保持不变,只需更改您正在调用的路由:

$("#submitemail").click(function(){
$.post("/getSlackData",
    JSON.stringify({'text':'invite request from:'+$("#email").val(),'username':'Slack Inviter','icon_emoji':':raising_hand:'})
  ).success(function(){
    $("#email").val("");
  });
});

我希望我能正确理解你的问题,至少应该让你指出正确的方向。