Это то, что мы делаем для наших приложений,
Сначала мы отправляем имя пользователя и пароль на сервер из нашего приложения.
На сервере они аутентифицируют учетные данные и возвращают ответ, который является комбинацией токена запроса и флага успеха.
В нашем приложении мы проверяем флаг успеха. Если для него установлено значение true, мы сохраняем токен запроса и используем его для всех последующих исходящих запросов на сервер.
Теперь, когда сервер получает запрос, он проверяет базу данных, чтобы узнать, есть ли у пользователя этот токен.
Если это так, он проверяет время, в которое был сделан последний запрос (для обработки случаев, когда время входа пользователя истекло). Если разница между текущим временем и временем последнего запроса превышает установленный лимит, вы ответили приложению, что для создания нового токена требуется новый запрос входа в систему. В противном случае вы продолжите запрос и ответите результатами.
Вот как это делают серверные ребята на моем рабочем месте. Я работаю на стороне клиента. Но это в основном то, что сделано.
Редактировать: О токене.
В основном это строка из 32 символов, которая генерируется методом случайного генератора. Поэтому, когда пользователь отправляет запрос на вход в систему, и вход в систему успешен, мы создаем токен с использованием метода генератора и сохраняем его в нашей базе данных сервера в качестве токена запроса пользователя вместе с текущими временем и датой.
Поэтому, когда пользователь отправляет другой запрос на сервер, мы сначала берем токен и проверяем, существует ли пользователь с этим токеном. Если есть, то следующая проверка состоит в том, чтобы увидеть, является ли это каким-то старым маркером запроса. Таким образом, мы проверяем текущее время с временем, сохраненным в базе данных. Если запрос был отправлен до лимита (например, 5 минут), мы обновляем текущее время последнего запроса в базе данных и возвращаем результат клиенту.
С помощью этого метода вы выполняете аутентификацию для каждого запроса, проверяя токен и время последнего запроса.
Предположим, вы хотите, чтобы ваше приложение входило в систему все время, пока пользовательский интерфейс не выйдет из системы. В этом случае вам не нужно проверять время каждого запроса. Все, что вам нужно сделать, это сохранить токен запроса на клиентском устройстве. И когда пользователь выходит из системы, удалите токен из клиента. Поэтому он должен будет войти в следующий раз, поскольку у него нет токена. В этом сценарии немного безопаснее сохранить маркер запроса на клиентском устройстве, чем сохранить имя пользователя и пароль.
Существует множество функций для генерации случайных токенов.