2010-01-14 32 views
5

Tôi đang viết một dịch vụ web nhỏ trong Ruby bằng Sinatra. Truy cập vào tất cả mọi thứ được kiểm soát bằng cách sử dụng http auth cơ bản (hơn https trong sản xuất).Làm cách nào để loại trừ đường dẫn yêu cầu xác thực cơ bản trong Sinatra

Có một thư mục cụ thể mà tôi muốn loại trừ khỏi yêu cầu ủy quyền. Có cách nào làm dễ hơn không?

+1

Bạn có thể đăng mã không? –

Trả lời

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

Tuyệt vời. Cảm ơn! –

Các vấn đề liên quan