GonetsDocs/Documentation/Tech-docs/api/storage/session_storage.md

96 lines
3.9 KiB
Markdown
Raw Normal View History

2025-10-14 16:14:11 +05:00
# 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
<br/>
}
<br/>
}
Политика 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
Очищает истекшие сессии перед поиском и возвращает сессию с самым
поздним временем создания.