Базовая аутентификация HTTP для приложения Rack :: Static на Heroku - PullRequest
9 голосов
/ 13 августа 2011

У меня есть простое приложение Rack, размещенное на Heroku.config.ru:

use Rack::Static, 
  :urls => ["/stylesheets", "/images", "/javascripts"],
  :root => "public"

run lambda { |env|
  [
    200, 
    {
      'Content-Type'  => 'text/html', 
      'Cache-Control' => 'public, max-age=86400' 
    },
    File.open('public/index.html', File::RDONLY)
  ]
}

Как добавить к этому базовую аутентификацию HTTP?Бонусные баллы, если он работает только в производственной среде.

Спасибо

Ответы [ 2 ]

14 голосов
/ 13 августа 2011
use Rack::Static, 
  :urls => ["/stylesheets", "/images", "/javascripts"],
  :root => "public"

#SOLUTION:
use Rack::Auth::Basic, "Restricted Area" do |username, password|
  [username, password] == ['admin', 'admin']
end

run lambda { |env|
  [
    200, 
    {
      'Content-Type'  => 'text/html', 
      'Cache-Control' => 'public, max-age=86400' 
    },
    File.open('public/index.html', File::RDONLY)
  ]
}
6 голосов
/ 12 февраля 2012

Если вы также хотите защитить изображения, таблицы стилей и javascripts за базовой аутентификацией, вам нужно сначала поставить Rack :: Auth :: Basic:

use Rack::Auth::Basic, "Restricted Area" do |username, password|
  [username, password] == ['admin', 'admin']
end

use Rack::Static, 
  :urls => ["/stylesheets", "/images", "/javascripts"],
  :root => "public"

run lambda { |env|
  [
    200, 
    {
      'Content-Type'  => 'text/html', 
      'Cache-Control' => 'public, max-age=86400' 
    },
    File.open('public/index.html', File::RDONLY)
  ]
}
...