Таблица oc_api_session
Таблица oc_api_session играет ключевую роль в работе REST API OpenCart. Она хранит информацию о текущих активных сессиях, создаваемых для авторизованного доступа внешних приложений, мобильных клиентов или других сервисов к данным магазина.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
api_session_id |
int |
Уникальный идентификатор сессии API. Первичный ключ таблицы с автоинкрементом. |
api_id |
int |
Внешний ключ, связывающий сессию с конкретным API-пользователем. Ссылается на таблицу oc_api.
|
session_id |
varchar(32) |
Уникальный идентификатор сессии (Session ID), который генерируется системой при успешной аутентификации. Этот токен используется в заголовках последующих запросов для авторизации. |
ip |
varchar(40) |
IP-адрес клиента, с которого была создана сессия. Используется для дополнительной безопасности и отслеживания источника запросов. |
date_added |
datetime |
Дата и время создания сессии. |
date_modified |
datetime |
Дата и время последнего использования (модификации) сессии. Обновляется при каждом обращении к API с использованием данного Session ID. |
Как это работает
Для использования API в OpenCart необходимо сначала создать API-пользователя в админ-панели (Система → Пользователи → API). После создания API-пользователя внешнее приложение может инициировать процесс аутентификации.
Процесс работы выглядит следующим образом:
1. Клиентский скрипт или приложение отправляет POST-запрос на эндпоинт аутентификации API (например, /index.php?route=api/login), передавая свои учетные данные (ключ API).
2. При успешной проверке ключа система генерирует уникальный session_id и создает новую запись в таблице oc_api_session, связывая её с api_id пользователя и записывая IP-адрес клиента.
3. Сгенерированный session_id возвращается клиенту и должен использоваться в заголовках (например, X-Oc-Session) всех последующих запросов к защищенным методам API для подтверждения прав доступа.
4. При каждом новом запросе система ищет переданный session_id в этой таблице, проверяет его актуальность и обновляет поле date_modified.
5. Сессии могут иметь время жизни, по истечении которого (или после выхода из системы) запись удаляется из таблицы, делая токен недействительным.
Пример SQL-запроса
Получить список всех активных сессий для конкретного API-пользователя можно следующим запросом:
SELECT aps.*, a.name as api_name, a.username
FROM oc_api_session aps
LEFT JOIN oc_api a ON (aps.api_id = a.api_id)
WHERE aps.api_id = 1
ORDER BY aps.date_modified DESC;
Смотрите также
-
таблицу
oc_api,
которая хранит учетные записи API-пользователей -
таблицу
oc_session,
которая хранит сессии обычных пользователей и администраторов -
таблицу
oc_api_ip,
которая содержит белый список IP-адресов для доступа к API