Дизайн подход для входа без токена - PullRequest
1 голос
/ 27 апреля 2011

Я пишу приложение для Android 2.2 для своей компании. Приложение просто отправляет запросы http get / put / post для выполнения определенных операций. Нет реальной процедуры входа в систему, так как имя пользователя и пароль должны быть включены в каждый запрос http.

Я видел, что в Android есть AccountManager. Но так как имя пользователя и пароль (вместо некоторого токена авторизации) необходимы для каждого http-запроса, как он может вписаться? Очевидно, я хочу сделать его похожим на другие приложения для Android, чтобы пользователю было необходимо войти в систему только один раз в первый раз, и он не будет запрашивать имя пользователя / пароль при повторном запуске приложения.

Любое предложение приветствуется. Спасибо!

1 Ответ

6 голосов
/ 27 апреля 2011

Я разработал подобное приложение, поэтому вот как я решил это в psuedocode.

Но так как имя пользователя и пароль (вместо некоторого токена аутентификации) необходимы для каждого запроса httpКак это может вписаться?

1 #: Сделать первую страницу, страницу login .Пусть это View включает два EditText с (имя пользователя и пароль) и один Button (кнопка входа в систему).

2 #: Сделайте запрос на вход при нажатии Button, чтобы увидеть, получаете ли вы правильный Cookie с именами заголовков HTTP , которые соответствуютсо значениями, которые вы получаете, когда вы вошли в систему. Найдите действительную информацию с помощью сетевого инструмента, например WireShark .Для получения дополнительной информации о процедуре входа в систему, проверьте мой другой ответ здесь .

3 #: если имя пользователя и пароль привели к правильной информации Cookie, save имя пользователя и пароль в SharedPreferences и сделать их значения доступными через ваше приложение , присвоив его классу Application, прочитайте это для получения дополнительной информации о глобальных переменных .Если значения были неправильными и вы не получили действительный Cookie, покажите его пользователю с помощью сообщения (Toast?).

4 #: когда вы пытаетесь получить авторизованную информацию, отправляет запрос , используя сохраненную информацию в классе Application.

5 #: В следующий раз вы запускаете приложение, отметьте в onCreate(), где вы проверяете, содержит ли SharedPreferences информацию о пользователе, если так: см. Шаг 6 #, в противном случае дождитесьпользователю начать ввод информации.

6 #: Если на странице входа в систему определена информация о пользователе, присвойте SharedPreferences глобальному состоянию Application, завершите вход в систему Activityи запустите авторизованный Activity вместо . это произойдет очень быстро , поэтому пользователь не заметит, что отображается "страница входа".

7 # (дополнительный шаг): в авторизованном Activity убедитесь, чтополучить информацию о пользователе из экземпляра Application.Когда делает первый запрос к авторизованному контенту, проверяет задачу, как вы делали в шаге # 3 , чтобы контролировать, изменил ли пользователь пароль наВеб-сайт.Если пользователь не изменил какую-либо информацию, начните захватывать ответ и вы можете делать все, что захотите.

...