2010-04-23 85 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模型。但是这将涉及在应用程序中使用单独的身份验证代码。

任何人有任何意见,可以分享他们的经验?谢谢

回答

相关问题