96 lines
3.9 KiB
Markdown
96 lines
3.9 KiB
Markdown
|
|
# 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
|
|||
|
|
Очищает истекшие сессии перед поиском и возвращает сессию с самым
|
|||
|
|
поздним временем создания.
|