Доброго времени суток. Хотел бы узнать можно ли обращаться к данным сессии через API?
Посмотрите, например, тут: How to get the users detail info in api call in cs-cart? - Stack Overflow
Ну это понятно. Как я понял, при отправке API запросов сессия не стартует. Но мне хотелось бы это реализовать. Например:
При отправке POST запроса, стартуется сессия, данные записываются и в ответе возвращает ID сессии.
use Tygh\Web\Session;
public function create($params)
{
session_start();
$sessionId = session_id();
$data = [
'message' => $message,
'session_id' => $sessionId
];
$status = Response::STATUS_OK;
} else {
$data = ['error' => $error];
$status = Response::STATUS_BAD_REQUEST;
}
return [
'status' => $status,
'data' => $data
];
}
При отправке GET запроса, запускается сессия с тем же ID для использования данных сессии.
use Tygh\Web\Session;
public function index($id = 0, $params = array())
{
$sessionId = $params['session_id'];
$session_class = new Session();
$session_class->start($sessionId);
}
Вышеприведенный код “ПРИМЕРНЫЙ”, не судите строго.
Извиняюсь. Сессия иницилизируется при HTTP аутентификации. Авторизуемся при помощи Bearer token’а администратора.
Разобрался.
В POST методе генерируем новую сессию. Записываем ID в data и пропускаем в ответе для локальной записи:
public function create($params)
{
Tygh::$app['session']->regenerateID();
$data = [
'message' => $message,
'session_id' => Tygh::$app['session']->getID()
];
return [
'status' => $status,
'data' => $data,
];
}
В GET методе через параметры передаем session id и запускаем сессию:
public function index($id = 0, $params = array())
{
$session = Tygh::$app['session'];
$session->start($params['session_id']);