Множественные схемы аутентификации с Devise и Rails 3

#ruby-on-rails-3 #devise #restful-authentication

#ruby-on-rails-3 #devise #restful-аутентификация

Вопрос:

Вероятно, это распространенный вопрос, но я нигде не видел полных ответов на него:

У меня есть приложение Rails 3, которое использует Devise для аутентификации в Интернете и работает нормально. Все действия на всех контроллерах аутентифицируются, и все маршруты являются restful. Пользователи перенаправляются на веб-страницу, чтобы ввести свое имя пользователя и пароль, а затем могут получить доступ к ресурсам.

Теперь мне нужно добавить API в систему. Большинство контроллеров / действий будут разделены между пользователями Web и API, но у пользователей API будет другая схема аутентификации (возможно, ключи API).

Итак, если веб-пользователь переходит к

 /projects/1/users
  

чтобы увидеть пользователей в Интернете, пользователь API должен перейти на

 /api/v1/projects/1/users
  

чтобы увидеть то же самое с параметром типа APIKey=abcd …. либо в заголовке, либо в параметрах, разрешающих аутентификацию.

Я знаю, что решение заключается в переопределении SessionController и маршрутов, но нигде не могу найти подробного ответа по этому поводу.

Комментарии:

1. Вы пробовали решение, приведенное ниже? Сработало ли это у вас?

2. Да, пробовал. Не сработало. Отказались от всего этого и разделили кодовую базу для API и основного сайта.

Ответ №1:

Возможно, вы сможете достичь тех же результатов, используя аутентификацию токена:

http://rdoc.info/github/plataformatec/devise/master/Devise/Models/TokenAuthenticatable