2010-01-14 3 views
5

Sinatra를 사용하여 Ruby에 작은 웹 서비스를 작성하고 있습니다. 거의 모든 것에 대한 액세스는 HTTP 기본 인증 (프로덕션 환경에서 https를 통해)을 사용하여 제어됩니다.Sinatra에서 기본 인증을 요구하지 않도록 경로를 제외하려면

승인을 요구하지 않도록 제외하려는 특정 디렉토리가 하나 있습니다. 이 작업을 수행하는 쉬운 방법이 있습니까?

+1

코드를 게시 할 수 있습니까? –

답변

11
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!" } 
+0

굉장합니다. 감사! –