Для баз данных, которые не требуют какого-либо имени пользователя или пароля, я обычно выбираю данные из базы данных MySQL из моего приложения для Android, получая доступ к сценариям PHP.Чтобы отправить данные в базу данных, я отправляю переменные GET или POST в сценарии PHP.
Но если мне нужен доступ к базе данных, для которой обычно требуется сначала веб-пользователь, как мне взаимодействовать с базой данных?В моем приложении для Android пользователь может указать свой логин и пароль.
Сеансы PHP?
Могут ли приложения Android каким-либо образом использовать сеансы PHP при доступе к сценариям PHP на каком-либо веб-серверечерез HTTP-запросы?
Отправить логин / пароль как параметры GET / POST?
В моем приложении при доступе к моим PHP-сценариям я отправляю логин и пароль какGET / POST параметры каждый раз, когда я хочу получить доступ к ограниченным данным?Кажется довольно отрывочной отправкой логина / пароля в виде GET / POST каждый раз.
токен аутентификации?
Или я бы однажды отправил логин / пароль для аутентификации, а затем получил бы некоторыечто-то вроде маркера, который я отправляю при последующих вызовах PHP-скрипта?Я бы предположил, что это будет работать так:
- Пользователь отправляет информацию для входа в скрипт PHP
- После успешной аутентификации генерируется случайный токен и помещается в таблицу
user
. - Токен отправляется обратно в приложение
- Последующие вызовы базы данных включают токен в качестве параметра GET / POST.
- PHP-скрипт использует токен для аутентификации пользователя и получения информации базы данных, которая ограничена этим.user.
Несколько вещей об этом подходе:
- Когда приложение выходит из системы?Когда он выходит из приложения?Когда он переключается на другое приложение?Когда действие уничтожается?
- Если пользователь не выходит из приложения вручную (что обычно очищает значение токена из таблицы
user
), когда очищается значение токена? - Что произойдет, если пользователь отключит свой телефон и потеряет соединение с базой данных?Должна ли база данных автоматически очищать значение токена из таблицы
user
через некоторое время, чтобы какой-то случайный счастливчик не смог угадать токен? - Должен ли токен также установить некоторую временную метку
last_accessed_at
и запретить аутентификацию с использованием токена через определенный промежуток времени?
Существуют десятки учебных пособий по доступу к веб-базам данных MySQL с помощью приложений Android, но я не могу найти ни одного, который обсуждал бы работу с учетными даннымии / или схемы аутентификации.