Дизайн подход для входа без авторизационного токена
Я пишу приложение для Android 2.2 для своей компании. Приложение просто отправляет запросы http get/put/post для выполнения определенных операций. Реальной процедуры входа в систему не существует, так как имя пользователя и пароль должны быть включены в каждый запрос http.
Я видел, что в Android есть AccountManager. Но так как имя пользователя и пароль (вместо некоторого токена авторизации) необходимы для каждого http-запроса, как он может вписаться? Очевидно, я хочу сделать его похожим на другие приложения для Android, чтобы пользователю было необходимо войти в систему только один раз в первый раз, и он не будет запрашивать имя пользователя / пароль при повторном запуске приложения.
Любое предложение приветствуется. Спасибо!
1 ответ
Я разработал такое приложение, вот как я решил это в psuedocode.
Но так как имя пользователя и пароль (вместо некоторого токена авторизации) необходимы для каждого http-запроса, как он может вписаться?
1 #: сделать первую страницу, страницу входа. Пусть это View
включают два EditText
s (имя пользователя и пароль) и один Button
(кнопка входа).
2 #: сделать запрос на вход в Button
нажмите, чтобы увидеть, если вы получаете правильный Cookie
с именами заголовков HTTP, которые соответствуют значениям, которые вы получаете при входе в систему. Найдите действительную информацию с помощью сетевого инструмента, такого как WireShark. Для получения дополнительной информации о процедуре входа в систему, проверьте мой другой ответ здесь.
3 #: если имя пользователя и пароль верны правильно Cookie
сохранить имя пользователя и пароль в SharedPreferences
и сделать их значения доступными через ваше приложение, назначив его в Application
класс, прочитайте это для получения дополнительной информации о глобальных переменных. Если значения были неправильными и вы не получили действительный Cookie
, показать его пользователю через сообщение (Toast
?).
4 #: Когда вы пытаетесь получить доступ к авторизованной информации, сделайте запрос, используя сохраненную информацию в Application
учебный класс.
5 #: при следующем запуске приложения проверьте onCreate()
где вы проверяете, если SharedPreferences
содержит информацию о пользователе, если так: см. шаг 6#, в противном случае подождите, пока пользователь начнет вводить информацию.
6 #: Если на странице входа определена информация о пользователе, назначьте SharedPreferences
к глобальному Application
состояние, закончите вход Activity
и начать авторизованный Activity
вместо. Это произойдет очень быстро, поэтому пользователь не заметит, что была отображена "страница входа".
7 # (дополнительный шаг): в авторизованном Activity
убедитесь, что вы получили информацию о пользователях из Application
пример. Делая первый запрос к авторизованному контенту, подтвердите задачу, как вы делали в шаге № 3 , чтобы проверить, изменил ли пользователь пароль на веб-сайте. Если пользователь не изменил какую-либо информацию, начните захватывать ответ, и вы можете делать все, что хотите.