2010-04-23 52 views
1

我有一個Rails 2.3.x應用程序,它根據Authlogic Github示例實現User模型中的act_as_authentic和UserSession模型。我正在實施一個API以允許從iPhone訪問。將通過https使用HTTP基本身份驗證(不會實現單個訪問令牌)。每個API調用都需要訪問的用戶名/密碼。使用Authlogic或authenticate_or_request_with_http_basic進行API調用的HTTP基本認證?

例如,我可以通過調用http://username:[email protected]:3000/books.xml來訪問API。如果使用單個訪問令牌,Authlogic將不會持續。但我使用的是HTTP Basic,我認爲Authlogic將爲API調用創建會話,而不是用於我的API方法。因此,對於我所做的每個API調用,都會創建新的會話對象。因此,在我看來,這會很快加載服務器資源。聽起來不是一個好主意。

另一種方法是對API控制器使用Rails authenticate_or_request_with_http_basic。添加before_filter的示例:

def require_http_auth_user 
    authenticate_or_request_with_http_basic do |username, password| 
     if @current_user = User.find_by_email(username) 
     @current_user.valid_password?(password) 
     else 
     false 
     end 
    end 
end 

這將繞過Authlogic UserSession並使用User模型。但是這將涉及在應用程序中使用單獨的身份驗證代碼。

任何人有任何意見,可以分享他們的經驗?謝謝

回答