Да, это то же самое. Вы можете использовать Digest auth или если вы хотите придерживаться Basic, вы можете убедиться, что он использует SSL.
Базовый и Дайджест пример:
https://github.com/sinatra/sinatra-book-contrib/blob/master/middleware/rack_auth_basic_and_digest.md
HTTPS с базовым примером приложения:
. / Config.ru
require 'rubygems'
require 'sinatra'
require 'haml'
require './app'
run App
. / App.rb
class App < Sinatra::Application
configure do
set :haml, :format => :html5
set :root, File.dirname(__FILE__)
# more config stuff, db, mailers, file storage etc...
end
end
# HELPERS
require 'helpers/helpers'
# CONTROLLER
require 'controller/admin'
. / Хелперы / helpers.rb
module Sinatra
module RegexpRouteFilter
def before_with_regexp(pattern, &blk)
before do
instance_eval(&blk) if request.path =~ pattern
end
end
end
register RegexpRouteFilter
end
class App < Sinatra::Application
helpers do
def protected!
unless authorized?
response['WWW-Authenticate'] = %(Basic realm="Testing HTTP Auth")
throw(:halt, [401, "Not authorized\n"])
end
end
def authorized?
@auth ||= Rack::Auth::Basic::Request.new(request.env)
@auth.provided? && @auth.basic? && @auth.credentials && @auth.credentials == ['user', 'pass']
end
end
before_with_regexp(/^\/admin/) do
if settings.environment == :production
unless (@env['HTTP_X_FORWARDED_PROTO'] || @env['rack.url_scheme']) == 'https'
redirect "https://#{request.env['HTTP_HOST']}#{request.env["REQUEST_PATH"]}"
end
end
protected!
end
end
. / Контроллер / admin.rb
class App < Sinatra::Application
get '/admin' do
haml :"admin/index"
end
end
. / Просмотров / админ / index.haml
%h1 Admin
%p Welcome!
Затем запустите приложение с самоцветом дробовика shotgun config.ru -p 4567