Авторизация пользователей
Центральный сервер (далее ЦС) выполняет задачи авторизации пользователей и работы с их данными. В базе ЦС имеются только таблица данных пользователей:
- user_id
- login
- pwd
- Хэш пароля пользователя
- auth_key
- Зашифрованная строка данных служащая для идентификации другими модулями (ключ аутентификации)
- auth_key_expires
- Срок истечения действия ключа аутентификации
- player_data
- Игровые параметры в виде сохранённого массива
При авторизации пользователя на ЦС, браузер получает куки, хрянящую только auth_key. Далее, в процессе работы при запросе к любому из модулей игры дополнительным параметром отправляется этот auth_key. Модуль, получив запрос от клиента, первым делом проверяет принадлежность auth_key согласно кэш-таблицы игроков:
- user_id
- auth_key
- auth_key_expires
- player_data
Возможны следующие ситуации:
- Ключ не найден
- Делается внутренний запрос модуля к ЦС, содержащий указанный auth_key. В ответ должен прийти пакет либо содержащий данные пользователя (обновление), либо отказ.
- Ключ найден, но auth_key_expires уже истекло
- Делается внутренний запрос модуля к ЦС, содержащий указанный auth_key. В ответ должен прийти пакет либо содержащий данные пользователя (обновление), либо отказ.
- Ключ найден и срок действия ещё не истёк
- Ничего не требуется
Пример запроса на проверку/обновление данных игрока:
{
command: {
name: "auth",
params: {
id: "1234",
key: "98hq29384fh34tg"
}
}
}
Пример удачного ответа проверки/обновления данных игрока:
{
response: "ok",
data: {
user_id: "1234",
auth_key_expires: "1132342522",
player_data: "<b64-encoded-data>"
}
}
