在Heroku上将NodeJs应用程序设为私有

时间:2013-07-24 20:57:55

标签: node.js heroku basic-authentication

我正在尝试在Heroku上创建一个NodeJS应用程序,这样只有开发人员才能看到它。是否有一种简单的方法可以做到这一点,比如基本身份验证? (我一直在寻找的所有解决方案都特定于Ruby应用程序。)

2 个答案:

答案 0 :(得分:3)

如果您想利用基本身份验证,可以选择以下两个选项:http-authPassport。 http-auth是一个非常简单的模块,Passport是一个功能强大的模块,可以替代身份验证。这两个模块都提供了从基本代码到Express框架集成的代码示例。

答案 1 :(得分:1)

我有同样的问题。我设法得到一个可能适合你的解决方案,但不适合我,因为它似乎干扰了angular-fullstack的内置用户登录。

我只想快速密码保护应用程序,以便只有开发人员和利益相关者才能看到它。 https://www.npmjs.org/package/http-auth似乎可以解决问题。

这涉及将http-auth添加到您的项目中(npm install http-auth --save)。然后,您需要找到定义了createServer的文件及其中的代码。

如果你正在使用Express,你可以做这样的事情

// HTTP Authentication 
var preAuth = require('http-auth');
var basic = preAuth.basic({
        realm: "Restricted Access! Please login to proceed"
    }, function (username, password, callback) { 
         callback( (username === "user" && password === "password"));
    }
);

// Setup server
var app = express();
    app.use(preAuth.connect(basic));
var server = require('http').createServer(app);

如果没有,那么您可以尝试http-auth文档中的一个选项,例如

// Authentication module.
var auth = require('http-auth');
var basic = auth.basic({
        realm: "Simon Area."
    }, function (username, password, callback) { // Custom authentication method.
        callback(username === "Tina" && password === "Bullock");
    }
);

// Creating new HTTP server.
http.createServer(basic, function(req, res) {
    res.end("Welcome to private area - " + req.user + "!");
}).listen(1337);

这里还有几个相似的线程,有些类似的方法。

express.basicAuth throwing error

Basic HTTP authentication in Node.JS?