2010-04-23 4 views
1

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

Я могу получить доступ к API, позвонив по телефону http://username:[email protected]: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 и просто использовать модель пользователя. Но это потребует использования отдельных кодов аутентификации в приложении.

У кого есть есть комментарии и могут поделиться своим опытом? Спасибо

ответ

1

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

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

+0

Спасибо за указатель. –