#node.js #express #basic-authentication #hubot
#node.js #экспресс #базовая аутентификация #hubot
Вопрос:
Я использую Hubot, и я определил переменные среды EXPRESS_USER и EXPRESS_PASSWORD для включения базовой аутентификации. Hubot использует express и в основном это
setupExpress: ->
user = process.env.EXPRESS_USER
pass = process.env.EXPRESS_PASSWORD
stat = process.env.EXPRESS_STATIC
express = require 'express'
app = express()
app.use (req, res, next) =>
res.setHeader "X-Powered-By", "hubot/#{@name}"
next()
app.use express.basicAuth user, pass if user and pass
app.use express.query()
app.use express.bodyParser()
app.use express.static stat if stat`
Я хочу предоставить HTTP-команду в скрипте, который не нуждается в базовой аутентификации. Однако я не могу изменить изменить код в Hubot, где выражается его инициализация
robot.router.get '/some-anonymous-path', (req, res) ->
console.log 'Should be here without need to authenticate
Кто-нибудь знает, возможно ли это сделать в expressjs?
Заранее спасибо
Бруно
Ответ №1:
Как насчет того, чтобы поместить nginx перед вашим Hubot? Затем вы также можете добавить SSL, разрешить доступ только к определенным путям, переписать URL-адреса или даже обслуживать статический контент, созданный скриптами hubot. Простой пример блока nginx.conf:
upstream hubot {
server localhost:8080;
}
server {
listen 80;
satisfy any;
allow 127.0.0.1;
deny all;
location ~ ^/(public|obscured) {
allow all;
proxy_pass http://hubot;
}
location ~ ^/(static) {
auth_basic "Restricted";
auth_basic_user_file htpasswd;
root /www;
}
location ~ {
auth_basic "Restricted";
auth_basic_user_file htpasswd;
proxy_pass http://hubot;
}
}
Затем добавьте пару htpasswd в /etc/nginx/htpasswd и в свой набор сценариев инициализации BIND_ADDRESS=localhost
hubot (привязка по умолчанию 0.0.0.0), и вы отправитесь в гонки.