Kennwort ein Schienen schützen Umwelt staging
-
18-09-2019 - |
Frage
Ich versuche, herauszufinden, was der beste Weg, um meine Staging-Umgebung zu sichern wäre. Derzeit beide Inszenierung und Produktion auf demselben Server ich renne.
Die beiden Optionen, die ich von wären denken kann:
Verwenden Schienen Digest-Authentifizierung
ich so etwas wie dies in der application_controller.rb setzen könnte
# Password protection for staging environment
if RAILS_ENV == 'staging'
before_filter :authenticate_for_staging
end
def authenticate_for_staging
success = authenticate_or_request_with_http_digest("Staging") do |username|
if username == "staging"
"staging_password"
end
end
unless success
request_http_digest_authentication("Admin", "Authentication failed")
end
end
Dies wurde von
Lösung Stoßen diese anderen zu helfen, wie ich als ich das las, bevor er sich auf einer ähnlichen, aber sauberere Lösung. Ich schrieb eine kurze Blog-Post über sie. # 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
Andere Tipps
Wenn Sie mit Multi-Staging-Umgebungen bereitstellen und so haben Sie Produktionsumgebung und Staging-Umgebung, müssen Sie nur diese Zeilen config / Umgebungen / staging.rb
hinzufügenMyApp::Application.configure do
# RESTRICTING ACCESS TO THE STAGE ENVIRONMENT
config.middleware.insert_before(::Rack::Runtime, "::Rack::Auth::Basic", "Staging") do |u, p|
u == 'tester' && p == 'secret'
end
...
end
Auf diese Weise brauchen Sie nicht Apache zu konfigurieren.
Ich bin mit Ruby 2 mit Rails 4 und es wirkt wie ein Zauber!
Ich würde mit der HTTP-Basisauthentifizierung gehen, sehe ich keine inhärenten Probleme damit.