GonetsDocs/Documentation/Tech-docs/api/storage/session_storage.md
2025-10-14 16:19:35 +05:00

3.9 KiB
Raw Permalink Blame History

storage.session_storage

class storage.session_storage.SessionStorage(file_path: str = '/etc/gonets/sessions.json')

Bases: object

Хранилище сессий пользователей в JSON-файле.

Назначение:
Лёгкое файловое хранилище для сессионных токенов, сопоставленных с client_id (например, IP клиента). Предназначено для сред без БД и persistent‑кэшей. Обеспечивает базовые операции и авто‑очистку протухших сессий.
Формат данных:
{
“sessions”: {
“<session_id>”: {
“username”: str, “token”: str, “client_id”: str, “created_at”: ISO8601 str, “expiry”: ISO8601 str
}
}
Политика TTL:
Каждая сессия действует 30 минут. При создании/чтении/удалении вызывается clean_expired_sessions() для удаления протухших записей.
Ограничения:
  • Нет файловых блокировок: в многопроцессных конфигурациях возможны гонки.
  • Размещение по умолчанию /etc/gonets/sessions.json требует прав на запись.

clean_expired_sessions()

Удаляет все истекшие сессии из хранилища.

  • Raises: Exception – Если произошла ошибка при чтении или записи данных.

NOTE

Проверяет срок действия каждой сессии и удаляет те, что истекли, записывая обновлённые данные.

create_session(username: str, token: str, client_id: str) → str

Создаёт новую сессию и возвращает уникальный session_id.

  • Parameters:
    • username (str) – Имя пользователя, для которого создаётся сессия.
    • token (str) – Токен аутентификации.
    • client_id (str) – Идентификатор клиента.
  • Returns: Уникальный идентификатор сессии (session_id).
  • Return type: str
  • Raises: Exception – Если произошла ошибка при создании или записи сессии.

NOTE

Удаляет истекшие сессии перед созданием новой и устанавливает срок действия 30 минут.

delete_session(session_id: str)

Удаляет сессию по указанному session_id.

  • Parameters: session_id (str) – Уникальный идентификатор сессии.
  • Raises: Exception – Если произошла ошибка при чтении или записи данных.

NOTE

Очищает истекшие сессии перед удалением.

get_latest_session(client_id: str) → Dict | None

Получает последнюю активную сессию для указанного client_id.

  • Parameters: client_id (str) – Идентификатор клиента.
  • Returns:
    Словарь с данными последней активной сессии, включая
    ”session_id”, или None, если сессия не найдена.
  • Return type: Optional[Dict]
  • Raises: Exception – Если произошла ошибка при чтении или обработке данных.

NOTE

Очищает истекшие сессии перед поиском и возвращает сессию с самым поздним временем создания.