Базовая аутентификация HTTP с использованием Authlogic или authenticate_or_request_with_http_basic для вызова API? - PullRequest
1 голос
/ 23 апреля 2010

У меня есть приложение Rails 2.3.x, которое реализует act_as_authentic в модели User и модели UserSession в соответствии с примером Authlogic Github. Я реализую API, чтобы разрешить доступ с iPhone. Будет использоваться HTTP Basic аутентификация через https (не будет реализован токен единого доступа). Для каждого вызова API требуется имя пользователя / пароль для доступа.

Я могу получить доступ к API, например, по телефону http://username:password@localhost:3000/books.xml. Authlogic не будет сохраняться, если используется один токен доступа. Но я использую HTTP Basic, который, я думаю, Authlogic создаст сеанс для вызовов API, который не используется для моих методов API. Таким образом, для каждого вызова API, который я сделал, создается новый объект сеанса. Таким образом, мне кажется, что это довольно быстро загрузит ресурс сервера. Звучит как плохая идея.

Альтернативой является использование Rails authenticate_or_request_with_http_basic для контроллеров API. Пример добавления 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 Ответ

1 голос
/ 24 апреля 2010

В итоге мне стало проще просто сделать UserSession образцом объекта.Надеюсь это поможет.Образцы кода относительно эффективного использования включены в ссылку, если есть другие вещи, с которыми я могу вам помочь.

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

...