Authlogic - Аутентификация через базовую HTTP-аутентификацию - PullRequest
3 голосов
/ 22 октября 2009

Я хочу использовать «authenticate_ with_ http_ basic», но просто не могу его получить рабочий.

В моем приложении RoR Authlogic работает нормально, и для этого я использую сеансы пользователя. Сохраняя этот метод, как сейчас, мне нужно использовать authenticate_with_http_basic. У меня есть приложение для iPhone SDK, и теперь мне нужно получить некоторые продукты из моего веб-приложения и отобразить их в виде списка. Итак, я предполагаю, что мне нужно отправить запрос в мое веб-приложение, как это; http://username:password@192.168.1.9/products/

Итак, мой вопрос заключается в проверке этого имени пользователя и пароля и что мне нужно сделать с моим контроллером UserSession?

Ответы [ 2 ]

5 голосов
/ 31 октября 2009

Вам не нужно ничего делать с 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
1 голос
/ 03 февраля 2010

Аутентификация через HTTP Auth теперь интегрирована в AuthLogic и включена по умолчанию.

...