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

Android Login Дизайн и разработка - Подходы и рекомендации

Хорошо. Я начал разрабатывать приложение для Android для нашего корпоративного веб-приложения. Просто запустил проект активности входа в систему.

Это приложение полностью управляется RESTFul API.

Я хотел бы понять, как разработать функцию входа/выхода в приложение. Насколько я понимаю, в мире приложений нет концепции Session. Кроме того, для API нам необходимо отправить Username и Password с каждым запросом (Basic Auth). По-видимому, нам нужно сохранить учетные данные для входа в локальном хранилище для отправки вместе с каждым запросом.

Вот что я понимаю из своих базовых знаний Android.

Когда пользователь вводит регистрационную информацию и нажимает кнопку, мы будем перенаправлять HTTP-вызов в API. Если учетные данные пользователя действительны, нам нужно будет хранить учетные данные локально. Параметры

  • SQLite
  • Общие настройки. (Я никогда не использовал его. Но я предполагаю, мы можем использовать это)
  • Bundle (Не уверен, что это вариант)

Любые другие альтернативы?

Я хочу, чтобы я следил за лучшей практикой, не жертвуя перспективой работы и архитектуры.

И для выхода из системы, я думаю, мне просто нужно уничтожить учетные данные, хранящиеся локально, и показать активность входа.

Существуют ли разные и лучшие подходы?

4b9b3361

Ответ 1

Я бы предложил использовать функцию Accounts.

Этот блог содержит довольно хорошее пошаговое руководство по всем битам, которые вам нужно собрать.

Общая идея заключается в том, что вы поставляете AccountManager с именем пользователя/паролем пользователей и оставляете его в AccountManager для безопасного хранения,

Если вам нужен токен аутентификации, вы запрашиваете у AccountManager один, и он либо вернет кеш-ключ, либо перезвонит в ваш код (передав имя пользователя/пароль), и сделав звонок в службу проверки подлинности, чтобы получить новый токен.

Ответ 2

Как правило, существует три способа сохранения данных в Android: SQLite, SharedPreferences и чтение/запись в файл a la Java I/O. SQLite оптимален для реляционных данных, но поскольку вам просто нужно хранить учетные данные пользователя, я рекомендую использовать SharedPreferences. Мне кажется, что это простая модель данных ключевого значения.

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

Я считаю, что это стандартная реализация. Если вы посмотрите на эту страницу, вы можете сделать так: http://developer.android.com/guide/topics/data/data-storage.html

Могу ли я также указать, что одна из сложностей с прямым файловым вводом/выводом заключается в том, что вам нужно будет решить, где вы хотите сохранить файл - внутреннюю или внешнюю память (например, SD-карту) - и, следовательно, проверьте его доступность (не все устройства имеют слоты для SD-карт, а иногда внутренняя память зарегистрирована как внешняя память устройства). Так что просто пойдите с общими привилегиями.

Для выхода из системы это может быть полезно: Удаление общих настроек

Ответ 3

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

Ответ 4

Зачем вам нужно сохранять учетные данные для входа в файл или базу данных? хотите ли вы автоматически войти в систему после перезапуска приложения? если persistance не требуется, вы можете поместить учетные данные в статический член java.