Применить идентификатор сеанса из заголовка запросаPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Применить идентификатор сеанса из заголовка запроса

Сообщение Anonymous »

Я не уверен, возможно ли это в Symfony, поэтому я придумал вопрос. Сценарий высокого уровня: < /p>
  • Запрос на API (встроенный в Symfony) должен вернуть session-id < /strong> на корпус ответа < /li>
    Происхождение должно включать в себя возвращенное session-id < /strong> на его заголовок, чтобы его следовать за запросом < /api < /at a atest> < /at a at strong> < /at a at a at a atest> < /at a atest> < /at a atest> < /at a atest> < /apr> api < /at strong> < /at ytroun the request headers has the session-id
    , if it does it must set that session on the Symfony session
For testing purposes, I am using two REST client for browser instance:


[*]Postman (Chrome)
httprequester (firefox) < /li>
< /ul>

Вот подход к коду, который я сделал: < /p>

Запрос от почты: < /p>

POST http://path.domain/api/url/
Content-Type: application/json
{
"key": "value"
}
< /code>

Используя сеанс httpfoundation, я устанавливаю сеанс: < /p>

$session = new Session();
$session->set('session-id', $session->getId());
$session->set('timestamp', time());
< /code>

Затем верните его, вот ответ: < /p>

200 OK
Content-Type: application/json
{
"session-id": "1a69f956b8efc5ab465356e3257a3230",
"timestamp": 1487850859
}
< /code>

Теперь, чтобы моделировать другой ответ из другого экземпляра, я использую httprequester, но с session-id < /strong> в заголовке: < /p>

POST http://path.domain/api/url/
Content-Type: application/json
{
"key": "value",
"session-id": "1a69f956b8efc5ab465356e3257a3230"
}
< /code>

, имея другой экземпляр запроса, я ожидаю, что Symfony будет генерировать новый сеанс (новое значение временной метки). Но для моего случая я хотел установить идентификатор сеанса
с одним в заголовке запроса, поэтому я могу получить доступ к предыдущему timestamp как возвращено в предыдущем ответе. />// 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'));
}
< /code>

Однако, если я сделаю это, я получаю ошибку: < /p>

"error": {
"code": 500,
"message": "Internal Server Error",
"exception": [
{
"message": "Cannot change the ID of an active session",
"class": "LogicException",
...
< /code>

Что я пропустил? Это возможно?

Подробнее здесь: https://stackoverflow.com/questions/424 ... est-header
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»