Помощь в аутентификации iOS с использованием токена пользователя, rest / rails и связки ключей - PullRequest
17 голосов
/ 18 декабря 2010

У меня есть приложение Rails (неважно, я знаю), и я хочу аутентифицировать приложение iOS на приложении Rails и сохранить аутентификацию, чтобы будущие запросы к API Rails работали без повторной аутентификации каждого запроса.Концептуально, вот что я хочу сделать ... Хотя я не уверен, что это лучший подход.

Хорошо, поэтому в моем приложении на Rails каждый пользователь имеет уникальный токен (хэш SHA1).Я думал, что при первой загрузке приложения для iPhone пользователь увидит экран имени пользователя / пароля.Они вводят свои учетные данные для приложения Rails, и после успешной аутентификации приложение Rails возвращает свой уникальный маркер пользователя, который затем может быть сохранен в цепочке для ключей?И с этого момента я подумал, что могу просто добавить токен пользователя ко всем запросам API, и таким образом я смог проверить пользователя в приложении Rails.Это также сохранит имя пользователя и пароль независимыми от приложения iPhone (чтобы пользователь мог изменить свое имя пользователя / пароль в приложении Rails, но приложение iPhone не заботилось бы об этом, поскольку оно будет использовать свой токен, который не изменится)).

Я думал, что мои URL-запросы могут выглядеть примерно так:

http://example.com/api/v1/[whatever].json?token=XXXXXXXXXXXXXXX

Похоже ли это на разумный подход?Или их проблемы мне не известны с таким подходом?Я давно работаю с Rails, но я относительно новичок в iOS (только 1 приложение под моим поясом, и оно не требует никакой аутентификации).

Если это хорошоподход, чтобы взять, это трудно работать с цепочкой для ключей?Мне кажется, я читал, что симулятор и само устройство не поддерживают один и тот же API для доступа к цепочке для ключей?(или, возможно, симулятор не поддерживает доступ к фиктивной цепочке для ключей)

Заранее спасибо.Я пробовал искать в старых сообщениях, но ни одна из них не отвечает моей конкретной ситуации.

Ответы [ 2 ]

7 голосов
/ 19 декабря 2010

Мы использовали этот подход с iOS, соединяющимся с приложениями Rails, и у нас не было никаких проблем.В ваших контроллерах API просто установите фильтр before, который находит вашего пользователя на основе вашего токена, и возвращает 401, если он недействителен.

Затем ваше мобильное устройство знает, получает ли оно 401, и показывает логинэкран, чтобы получить новый / действительный токен.Поместите это в фабрику соединений, и все будет хорошо.

Вы также можете добавить его в заголовок, если хотите сохранить чистоту URL, но у меня не было проблем с подходом URL param.

3 голосов
/ 16 февраля 2012
...