Приложение Android. Авторизация. Оптимальный способ хранения строки на устройстве
Нужно сохранить локально буквально одну строку вида "ключ: значение". Буду использовать это для авторизации в приложении следующим образом: пользователь вводит логин/пароль, связывается с удалённой БД MySQL, приложение получает id этого пользователя (которое мне и нужно хранить), далее с помощью запросов к удалённой БД с этим id хочу получать все необходимые мне данные для каждой активити (ФИО, связанные с пользователем сообщения и т.д.). Соответственно, если пользователь выйдет из приложения, id нужно удалить из памяти устройства. Собственно вопросы:
- Допустимо ли использовать такой способ для обеспечения авторизации?
- Какой способ хранения данных в данном случае будет самым удобным (подключать локальную БД или может можно как-то легче сделать для одной строки)?
Ответы (1 шт):
В андроиде есть класс SharedPreferences, он позволяет хранить настройки в виде хмл-файла в каталоге приложения. При удалении приложения этот файл также удаляется. Если мобильным приложением пользуется один человек на каждом устройстве, то тогда лучше использовать идентификатор устройства. (Передавать его на сервер при регистрации и связывать с пользователем). Если версия апи выше 28 тогда примерно так(если ниже то можно запросить серийный номер или IMEI):
id = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);
ну или хранить его в настройках примерно так.
String id= "-";
@Override
protected void onCreate(Bundle savedInstanceState) {
//добавь ниже дефолтного кода.
id = PreferenceManager.getDefaultSharedPreferences(this).getString("id","N/A");
}
//добавь при выходе пользователя
void onLogout()
{
PreferenceManager.getDefaultSharedPreferences(this)
.edit()
.clear()
.apply();
}
//добавь при получении идентификатора.
void onLogin(String newId)
{
PreferenceManager.getDefaultSharedPreferences(this)
.edit()
.putString(id, newId)
.apply();
}