我想在暫存服務器上實現HTTP基本認證,但僅限於本地網絡以外的用戶。我有一個Rails 3.1應用程序。在application.rb中,我有以下幾點:有條件的HTTP基本認證
class ApplicationController << ActionController::Base
http_basic_authenticate_with :realm => "Staging", :name => "user", :password => "password" if :need_authentication?
private
def need_authentication?
Rails.env == "staging" && request.remote_addr !~ /^192.168.0.\d{1,3}$/
end
end
這裏的難題是:即使need_authentication?
方法明確返回false
,應用仍然問我來驗證,因爲如果它完全無視如果條款最後。
那麼,有什麼辦法只需要在某些條件下認證?
'http_basic_authenticate_with'是一個類的方法。我試着把它放在另一個方法中,就像你上面描述的那樣,但是這給了我一個'未定義的方法'異常。 – partydrone