¿Hay alguna forma de configurar la autenticación http simple para una aplicación en heroku?
Quiero configurar un servidor privado en heroku usando autenticación http simple. Es eso posible?
6 answers
Absolutamente. La solución más simple es simplemente poner algo en su controlador de aplicación que use el soporte básico de autenticación integrado de Rails (vea aquí: http://railscasts.com/episodes/82-http-basic-authentication ) y simplemente envuélvalo en un condicional para su Rails.env
. Tenga en cuenta que en Heroku, de forma predeterminada, RAILS_ENV se establece en producción, pero puede cambiar esto para sus aplicaciones que no son de producción utilizando heroku config
(http://docs.heroku.com/config-vars).
También podría considerar instalando algún middleware de rack estilo roadblock, pero solo iría con lo anterior.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-10-01 17:33:40
Una forma más limpia es simplemente colocar un par de líneas de middleware de rack en la configuración de su entorno de ensayo, dejando la lógica del controlador sola:
# 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
Este consejo es cortesía de Ole Morten Amundsen. Más información más Heroku contraseña especificación:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-06-14 20:42:49
En Rails4, obtuve el error "No such middleware to insert after: Rack::Lock". Sustitúyase el código de Adán por el siguiente:
# config/environments/staging.rb
MyApp::Application.configure do
config.middleware.use '::Rack::Auth::Basic' do |u, p|
[u, p] == ['username', 'password']
end
# ...
end
Véase: http://www.intridea.com/blog/2013/6/4/tips-and-tricks-for-deploying-rails-4-apps-on-heroku
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-09 20:17:50
Hay un buen complemento de heroku que usa Mozilla Persona para la autenticación. Es gratis para sitios de bajo volumen (menos de 10,000 autenticaciones por mes):
Https://addons.heroku.com/wwwhisper
Muy fácil de instalar y configurar.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-22 16:35:29
Otra forma de hacerlo usando application_controller.rb:
# app/controllers/application_controller.rb
before_filter :http_basic_auth
def http_basic_auth
if ENV['HTTP_AUTH'] =~ %r{(.+)\:(.+)}
unless authenticate_with_http_basic { |user, password| user == $1 && password == $2 }
request_http_basic_authentication
end
end
end
Y luego necesita exportar sus valores: para el desarrollo:
export HTTP_AUTH=test:test
Para heroku:
heroku config:set HTTP_AUTH=test:test
Ahora, cuando el indicador de ventana debe ingresar para usuario/contraseña => prueba/prueba.
Eso es todo espero que lo encuentres útil.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-22 16:42:58
Respuesta actualizada para Rails 5:
config.middleware.use(Rack::Auth::Basic) do |u, p|
[u, p] == ["user", "password"]
end
Además, se ha señalado en la entrada del blog de Ole el uso de ENV vars. Me gustaría añadir que la opción predeterminada para una contraseña aleatoria es una buena idea en caso de que el var env no esté establecido:
config.middleware.use(Rack::Auth::Basic) do |u, p|
[u, p] == [ENV['USER'], ENV['PASSWORD'] || SecureRandom.hex]
end
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-19 23:35:45