- Запрос к API (встроенному в Symfony) должен возвращать session-id в теле ответа
- Источник запроса должен включать возвращенный session-id в свой заголовок для последующего запроса
- API должен проверять, имеют ли заголовки запроса session-id, если он должен установить этот сеанс в сеансе Symfony
- Postman (Chrome)
- HttpRequester (Firefox)
Запрос от почтальона:
Код: Выделить всё
POST http://path.domain/api/url/
Content-Type: application/json
{
"key": "value"
}
Код: Выделить всё
$session = new Session();
$session->set('session-id', $session->getId());
$session->set('timestamp', time());
Код: Выделить всё
200 OK
Content-Type: application/json
{
"session-id": "1a69f956b8efc5ab465356e3257a3230",
"timestamp": 1487850859
}
Код: Выделить всё
POST http://path.domain/api/url/
Content-Type: application/json
{
"key": "value",
"session-id": "1a69f956b8efc5ab465356e3257a3230"
}
Я создал событие ядра, чтобы перехватить запрос и проверить, имеет ли запрос session-id, а затем выполнить настройку сеанса.
Код: Выделить всё
// Get all PHP global variables
$request = Request::createFromGlobals();
// Check if the request
if ($request->headers->has('session-id')) {
$session = new Session();
$session->setId($request->headers->get('session-id'));
}
Код: Выделить всё
"error": {
"code": 500,
"message": "Internal Server Error",
"exception": [
{
"message": "Cannot change the ID of an active session",
"class": "LogicException",
...
Подробнее здесь: https://stackoverflow.com/questions/424 ... est-header
Мобильная версия