Rails 3 и обзор архитектуры iOS - PullRequest
1 голос
/ 04 декабря 2011

Моя цель - создать автономную службу RESTful Rails 3, которая обменивается данными с веб-приложением Rails 3 через ActiveResource JSON и приложением iPhone через iOS 5 с собственным JSON. Каждый из них работает так, что в сервисном приложении отображается одна таблица данных, которую можно вызывать и обрабатывать как с помощью приложения Rails, так и приложения iPhone.

Мой вопрос касается аутентификации и того, что можно повторно использовать как для веб-приложения, так и для приложения iPhone или в будущем для приложения Android.

Из проведенного мною исследования на этом сайте кажется, что HTTP Basic будет работать для обоих, однако я не смогу правильно выйти из системы на стороне пользователя, как сеансы или файлы cookie, и у меня есть форма входа в браузер, чтобы иметь дело с. Если я использую сеансы, как это отразится на настройке аутентификации на стороне iOS?

Этот проект представляет собой упражнение по изучению кода, поэтому я надеюсь на реализацию или руководство по архитектуре, а не просто на реализацию Devise или Authlogic и т. Д.

1 Ответ

1 голос
/ 04 декабря 2011

Звучит так, как будто вы объединяете, по крайней мере, две проблемы.

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

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

Возможно, вы захотите рассмотреть страницу входа, которая требует базовой аутентификации и запускает файл cookie для сеанса.управление.Все остальные страницы не требуют базовой авторизации, но дают 401 несанкционированный, если cookie не присутствует.Или вы могли бы перенаправить.Клиентский код iOS должен знать, чтобы сначала вызвать страницу входа, чтобы получить cookie, а затем использовать его после этого.Выход из системы - это удаление файла cookie .. хммм, но браузер все равно будет кэшировать базовые учетные данные аутентификации.

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

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