使用Authlogic或authenticate_or_request_with_http_basic进行API调用的HTTP基本身份验证?

时间:2010-04-23 19:44:47

标签: ruby-on-rails authlogic http-basic-authentication

我有一个Rails 2.3.x应用程序,根据Authlogic Github示例实现User模型中的act_as_authentic和UserSession模型。我正在实现一个API,允许从iPhone访问。将通过https使用HTTP基本身份验证(不会实现单一访问令牌)。每个API调用都需要用户名/密码才能访问。

例如,我可以通过调用http://username:password@localhost: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模型。但这将涉及在应用程序中使用单独的身份验证代码。

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

1 个答案:

答案 0 :(得分:1)

为了让UserSession成为模型对象,我最终变得更容易了。希望这可以帮助。链接中包含相对有效使用的代码示例,如果还有其他我可以帮助您的内容,请使用lmk。

http://www.corprew.org/blog/2010/01/27/authlogic-and-objectiveresource/

相关问题