3

我想使用“authenticate_ with_ http_ basic”,但我无法让它工作。

在我的 RoR 应用程序中,Authlogic 工作正常,我正在为此使用用户会话。在保持该方法不变的同时,我需要使用 authenticate_with_http_basic。我有一个 iPhone SDK 应用程序,现在我需要从我的 web 应用程序中获取一些产品并显示为列表。所以我假设我需要像这样将请求发送到我的 webapp;http://username:password@192.168.1.9/products/

所以我的问题是验证这个用户名和密码以及我需要对我的 UserSession 控制器做什么?

4

2 回答 2

5

您不需要对 执行任何操作UserSessionController,因为该控制器只会处理登录表单提交和注销。

Authlogic 和authenticate_with_http_basic彼此无关。如果你想通过 HTTP basic 进行身份验证,你只需要创建一个使用 Rails 提供的方法进行身份验证的方法,并将该方法放在before_filter. 通过 HTTP 身份验证登录,我假设每个请求都必须输入用户名和密码。

所以最后,你ProductsController会是这样的

class ProductsController < ApplicationController
  before_filter :authenticate_via_http_basic

  # In case you have some method to redirect user to login page, skip it
  skip_before_filter :require_authentication

  ...

  protected

  def authenticate_via_http_basic
    unless current_user
      authenticate_with_http_basic do |username, password|
        if user = User.find_by_username(username)
          user.valid_password?(password)
        else
          false
        end
      end
    end
  end
于 2009-10-31T15:51:39.447 回答
1

通过 HTTP Auth 进行的身份验证现已集成到 AuthLogic 中,并且默认启用。

于 2010-02-03T09:12:18.440 回答