2016-03-13 3 views
1

У меня есть приложение Symfony. Я сохраняю некоторую информацию о сессии в ней, используя request->getSession()->set(key, value).AJAX вызов создает новую сессию в Symfony

Если я вызываю действие с помощью вызова AJAX на стороне клиента, я не могу получить доступ к переменным сеанса, которые я сохранил ранее. Похоже, что вызов AJAX генерирует мне совершенно новый сеанс (новый идентификатор сеанса, по сравнению с тем, который присутствует в основном потоке).

У меня есть следующие настройки в config.yml:

session:   
    cookie_lifetime:   3600 
    cookie_httponly:   false 

Странная вещь, что на локальном хосте я получаю то же SESSIONID с помощью AJAX (так на локальный все работает отлично). Проблема возникла после того, как я развернул ее на веб-сервере.

Просьба сообщить. Спасибо

ответ

1

Если вы вызываете действие с контроллера через Ajax? В чем вы подразумеваете вызов Ajax на стороне сервера? Это немного странно. Предположим, вы это сделаете, сервер не имеет того же сеанса, но он создаст новый сеанс, который не связан с пользователем его сеансом.

Думайте, что вы должны использовать Контроллер его метод forward. См http://symfony.com/doc/current/book/controller.html#forwarding-to-another-controller

Или переместить метод, который вы хотите звонить в его собственный класс и настроить услугу для этого: http://symfony.com/doc/current/components/dependency_injection/configurators.html

+0

Извините, если мое описание не было достаточно ясно. Я имел в виду, что я просто использую вызов AJAX на стороне клиента для вызова метода из приложения Symfony. Например. $ .ajax ({ тип: "POST", URL: 'cart/add /' + id }); – user3751830

+0

Это должно работать, мы делаем это все время. Вероятно, ваш cookie сеанса - 'httponly': http://symfony.com/doc/current/reference/configuration/framework.html#cookie-httponly – Rvanlaak

Смежные вопросы