2010-08-28 65 views
3

我想在Ruby中創建一個WebService(Sinatra,Padrino,也許Ramaze ......還不知道......),但我一定要保護它...守望者vs Rack :: Auth :: Basic。在Ruby-Framework中執行HTTP-Basic-Auth認證

它將成爲Iphone-App的後臺,所以我認爲SSL-Secured HTTP-Basic-Auth會很好。

我一直在四處尋找身份驗證框架,並遇到了監獄長... 似乎是非常有據可查,設計建立在它之上...所以不能那麼糟糕...

但是...... seemd對我來說有點大材小用,我需要什麼...

然後我發現這個代碼Snipplet:

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 

看起來,如果我只是不需要超過這個atm ... 或者你們中的任何一個人可以親提供一個很好的典獄官+ HTTP-Basic驗證示例?或者向我解釋使用監獄長的更多好處?

在此先感謝! :)

回答

5

不完全確定你想在這裏實現什麼。然而,我們有一個Rails應用程序,我們使用Warden(+ devise)和HTTP-Basic-Auth結合使用中間件來隱藏我們的臨時實例。這是我們在config/environments/staging.rb中放入的內容:

config.middleware.insert_after(::Rack::Lock, "::Rack::Auth::Basic", "Not for public eyes") do |u, p| 
u == 'admin' && p == 'secret' 
    end 

這與我們的監察員身份驗證規則並行工作。