Подтвердить что ты не робот

Помощь с аутентификацией iOS с использованием токена пользователя, остальных/рельсов и брелка

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

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

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

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

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

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

Спасибо заранее. Я пробовал искать старые сообщения, но никто, кажется, не ответил на мою конкретную ситуацию.

4b9b3361

Ответ 1

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

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

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