7

Sinatra を使用して、Ruby で小さめの Web サービスを作成しています。ほとんどすべてへのアクセスは、http 基本認証を使用して制御されます (本番環境では https 経由)。

承認を必要としない特定のディレクトリが 1 つあります。これを行う簡単な方法はありますか?

4

1 に答える 1

13
require 'sinatra'

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 == ['admin', 'admin']
  end
end

before { protected! unless request.path_info == "/public" }

get('/public') { "I'm public!" }
于 2010-04-08T16:23:55.070 に答える