HTTP-запросы, сеансовые ключи и авторизация, связанные с Rails - PullRequest
1 голос
/ 22 декабря 2011

Я занимаюсь разработкой приложения для Android в свободное время уже несколько месяцев. Я выполнил все свои планы на стороне устройства (за исключением взаимодействия на стороне сервера), но меня встретил очень крутой курс обучения для реализации на стороне сервера. Я исследовал около месяца без реальных потенциальных клиентов. Следовательно, я действительно в тупике. Приложение, над которым я работаю, включает следующие минимальные требования:

  • Должен предлагать создание учетной записи / аутентификацию на сервере с
    устройство

  • Должен поддерживать какой-то сеанс, который позволяет авторизацию пользователя внести изменения, которые повлияют только на данные пользователя на сервере в контексте учетной записи, в которую они вошли.

  • Возможность выхода из системы / выхода из системы сервером при определенных условиях.

Веб-интерфейс не понадобится, поскольку эта услуга предназначена только для устройств Android.

Я решил, что реализация Rails является наиболее желательным вариантом для меня. Мой опыт работы с Rails и серверами в целом очень ограничен. Один мой друг порекомендовал мне прочитать «Agile Web Development with Rails», чтобы ускориться. Я сделал это через достаточное количество демонстрации приложения Depot, чтобы понять библиотеки ORM, шаблон MVC и строительные леса, но потом мне надоел способ, которым книга представляет информацию. Все очень последовательно, и авторы, кажется, опускают много «как», говоря, что они объяснят позже, и просто не волнуйтесь об этом до этого момента. Это не так, как я учусь. Я отвлекся.

До сих пор я использовал скаффолдинг в Rails для генерации модели, представления и контроллера для таблицы Accounts. Я установил атрибуты для имени пользователя, пароля, сеанса_ключа (случайно сгенерированного ключа, который пользователь должен получить и использовать для подключения со своего устройства после входа в систему) и т. Д. С помощью скаффолдинга. Я проверяю username и session_key, чтобы убедиться, что они уникальны, и моя генерация буквенно-цифровых ключей работает правильно (все это делается в модели).

Теперь я хотел бы сосредоточиться на управлении сессиями в спокойной манере. Я знаю, что мне нужно реализовать это, чтобы устройства Android передавали сеансовый ключ своего пользователя на сервер при выполнении HTTP-запросов, доступе к ресурсам и т. Д., Но в остальном я в растерянности.

Я ищу кого-то, кто предоставил бы мне хороший ресурс (или объяснение), в котором описывается, как HTTP-запросы и ответы работают в целом, как информация JSON может быть получена и проанализирована с использованием запроса, и как иначе управлять спокойной авторизацией ( при условии, что пользователю уже был назначен его сеансовый ключ). Если мой подход не совсем верен, пожалуйста, дайте мне знать, что вы предлагаете.

Спасибо!

1 Ответ

2 голосов
/ 22 декабря 2011

Для аутентификации вы можете проверить: http://railscasts.com/episodes/250-authentication-from-scratch В основном вы просто будете выполнять аутентификацию, используя session_key.Есть и другие, более сложные вещи, которые вы можете сделать, и вы можете проверить authlogic, devise, волшебство и т. Д., Чтобы увидеть, как они реализуют поддержание сессий.Поскольку вам требуются выходы из системы и, по-видимому, необходимость повторного входа в систему, я хотел бы предложить использовать ключ сеанса, который вы описываете как основную аутентификацию, а затем иметь какой-то скоропортящийся ключ, который сбрасывается после каждого запроса и отправляется обратно вклиент как keepalive.В зависимости от ваших конечных потребностей, этого может быть достаточно для обеспечения безопасности и функциональности.

Для получения JSON в rails есть встроенный разбор.Посмотрите на response_to .Для отправки обратно JSON вы можете использовать любое количество методов.Самое простое - просто позволить rails автоматически конвертировать JSON (что происходит при использовании response_with, как в ссылке).Вы также можете создавать классы для докладчиков или использовать что-то более формальное, например rabl .

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