2010-01-14 10 views
5

Sto scrivendo un piccolo servizio Web in Ruby utilizzando Sinatra. L'accesso a praticamente tutto è controllato tramite l'autenticazione di base http (su https in produzione).Come escludere un percorso dall'autorizzazione di base in Sinatra

C'è una directory particolare che voglio escludere dal richiedere l'autorizzazione. C'è un modo semplice per farlo?

+1

Puoi pubblicare il codice? –

risposta

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

Fantastico. Grazie! –

Problemi correlati