2015-06-30 3 views
1

Я хочу сохранить сеанс пользователя, как только пользователь войдет в свою учетную запись, чтобы они вошли в систему, даже после закрытия приложения и запуска. Поиск в Google и SO, люди называли SharedPreferences. Я понимаю, что я должен хранить данные пользователя в SP (SharedPreferences), но что, если пользователь обновляет свои данные? Кроме того, вызов HttpGet, который я отправляю по ссылке для получения пользовательских данных, возвращает действительные данные (JSON) только при входе пользователя в систему. Является ли SP единственным способом сделать это или есть другой и более эффективный способ сделать это?Управление сеансом пользователя в android

P.S. - Я работаю фрилансом для запуска, и у них есть API для их веб-сайта PHP. Я должен сделать приложение для Android для своего сайта. Чтобы зарегистрировать пользователя на веб-сайте, я делаю вызов Http POST для их API, и результатом, который я получаю, является JSON. Если JSON содержит значение «success» для ключа «result», пользователь должен войти в систему. Но как только я буду использовать намерение перейти к следующему действию (где я должен отображать пользовательские данные, сделав Http Get call другой API, который работает только при входе пользователя в систему), сеанс потерян. Поскольку я работаю фрилансером, они на самом деле не доверяют мне давать куки для пользовательских сеансов. Итак, я надеялся, что это может произойти иначе?

ответ

1

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

Более современный способ - использовать OAuth или интегрировать уже существующую систему входа (Facebook, Google и т. Д.) Для аутентификации пользователей.

Использование общих настроек - неправильный инструмент для этой работы. Это временное решение для правильной проверки подлинности. Есть способы, которые заслуживают доверия и безопасности, и заботятся о всех видах краевых дел, и, хотя для его создания требуется немного работы, это намного лучший вариант - ИМО.

+0

Сначала я думал о входе в Gmail для своего приложения, но они не хотят этого прямо сейчас. –

+0

Не могли бы вы объяснить, почему Shared Preferences - неправильный инструмент для этой работы? – Stephane

+0

Что это за другие намеки? – Stephane

0

Вы должны попытаться интегрировать API-интерфейсы Android AccountManger, поскольку сохранение учетных данных в общих настройках не особенно желательно с точки безопасности, особенно если ваше приложение будет запущено на корневых устройствах.

От docs:

общественного класса AccountManager расширяет объект java.lang.Object ↳ android.accounts.AccountManager Class Обзор

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

Различные онлайн-сервисы имеют разные способы обработки учетных записей и аутентификацию , поэтому менеджер учетных записей использует подключаемые аутентификаторы для разных типов учетных записей. Аутентификаторы (которые могут быть , написанные третьими лицами) обрабатывают фактическую информацию о проверке учетных данных и данных учетной записи . Например, Google, Facebook и Microsoft Exchange имеют свой собственный аутентификатор .

Многие серверы поддерживают некоторое понятие токена аутентификации, которое может использоваться для аутентификации запроса на сервер без отправки фактического пароля пользователя . (Auth tokens обычно создаются с отдельным запросом , который включает учетные данные пользователя.) AccountManager может генерировать токены аутентификации для приложений, поэтому приложение не должно обрабатывать пароли напрямую. Атрибуты Auth: обычно повторно используются и кэшируются AccountManager, но должны периодически обновляться . Ответственность за применение недействительными auth tokens, когда они перестают работать, поэтому AccountManager знает, что необходимо их восстановить. \

Смежные вопросы