有没有办法为heroku上的应用程序设置简单的http身份验证?

Eri*_*ric 27 ruby authentication http heroku

我想使用简单的http身份验证在heroku上设置一个私有临时服务器.那可能吗?

Ada*_*rin 52

更简洁的方法是将几行Rack中间件放入您的暂存环境配置中,只留下控制器逻辑:

# config/environments/staging.rb
MyApp::Application.configure do
  config.middleware.insert_after(::Rack::Lock, "::Rack::Auth::Basic", "Staging") do |u, p|
    [u, p] == ['username', 'password']
  end

  #... other config
end
Run Code Online (Sandbox Code Playgroud)

此提示由Ole Morten Amundsen提供.更多信息加Heroku密码规范:

http://olemortenamundsen.wordpress.com/2011/04/05/ruby-secure-staging-environment-of-your-public-app-from-users-and-bots/


Nob*_*obu 14

在Rails4上,我得到"没有这样的中间件插入后:Rack :: Lock"错误.将Adam的代码替换为以下代码:

# config/environments/staging.rb
MyApp::Application.configure do
  config.middleware.use '::Rack::Auth::Basic' do |u, p|
    [u, p] == ['username', 'password']
  end
  # ...
end
Run Code Online (Sandbox Code Playgroud)

请参阅:http://www.intridea.com/blog/2013/6/4/tips-and-tricks-for-deploying-rails-4-apps-on-heroku

  • 在Rails 5中,中间件需要实际的模块,而不是字符串.`config.middleware.use :: Rack :: Auth :: Basic` (3认同)

tfe*_*tfe 7

绝对.最简单的解决方案是在应用程序控制器中放置一些使用Rails内置的基本auth支持的东西(参见http://railscasts.com/episodes/82-http-basic-authentication)并将其包装在有条件的你的Rails.env.请注意,在Heroku上,默认情况下RAILS_ENV设置为production,但您可以使用heroku config(http://docs.heroku.com/config-vars)为非生产应用程序更改此设置.

你也可以考虑安装一些路障式的Rack中间件,但我只是按照上面的说法去做.