Реализация API для приложения Rails - PullRequest
0 голосов
/ 15 марта 2011

Я создаю API для моего приложения rails. Я пытаюсь повторно использовать одни и те же контроллеры как для API, так и для логики приложения.Запросы без аутентификации пользователя - это хорошо, но как реализовать, если для некоторых действий требуется аутентификация.Я использую authlogic, для редактирования людям нужны определенные разрешения, которые я проверяю в before_filter.Если я реализую API, используя базовую аутентификацию http, как мне отличить?

Ответы [ 2 ]

1 голос
/ 15 марта 2011

Я думаю, что ответ состоит из двух частей.Во-первых, вам нужно настроить базовую авторизацию http с помощью authlogic.Подробная информация об этом содержится в этом ответе SO: Rails: базовая аутентификация с Authlogic

Затем необходимо различать вызовы API и обычные вызовы браузера в контроллере.Предполагая, что ваш API - это XML или JSON, вы можете сделать это примерно так:

class ThingsController < ApplicationController
   before_filter :authorize

   def authorize
      if params[:format] == 'json' || params[:format] == 'xml' 
         require_http_auth_user # http basic auth for API access
      else
         require_user # normal authlogic authentication 
      end
   end
end
0 голосов
/ 15 марта 2011

Может быть стоит разделить на два отдельных контроллера и включить общие функции через миксин.Таким образом, вы можете авторизовать контроллеры отдельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...