Здрайствуйте. Подскажите пожалуйста алгоритм работы api для рельсового приложения. Суть такова:
Есть rails приложение с системой аутинтификации devise. В приложении можно создавать разнообразные сущности в базе данных. Для работы необходимо уметь создавать, изменять и удалять эти данные без помощи браузера, а с помощью скрипта, который запросы будет отправлять запросы.
Пользователь не может получить доступ ни к одной странице пока не авторизуется, так как во всех контроллерах у меня есть строка
before_filter :authenticate_user!
И главный вопрос - как все это сделать? Вроде решений несколько, в зависимости от говнокодистости:
1) Можно создать контроллер "API", который будет принимать запросы типа
{login: 'oleg', password:'123456', action:'create_item', data:{idem_name:'item'}}
- логин и пароль сравниваются, если все совпадает - вызываем там же созданные метод 'create_item' и передаем туда данные :data. Да, можно логин и пароль присылать 1 раз - генерировать токен/записать его в таблицу 'все_допустипые_токены', следующий запрос присылать уже с токеном, искать его в базе - нашли? => выполняем действия. Можно и так, но это условности, методы все равно дубликатить надо.
2) Второй вариант основывается на том, что аутинтификация devise основана на cookies. Схема - такая же, как и у варианта 1, НО в меcто токена, мы каким-то образом(пока не знаю как) логиним пользователя, данные которого передаем, а его куки возвращаем. Во всех последующих запросах эти куки будем просто подкладывать, типо это пользователь. Минус - если разлогинимся - кука перестанет быть валидной.
Оба варианта мне не нравятся, но как правильно делать - хз. Подскажите как можно api по цивилизованному сделать