В моем приложении используется ajax для запроса данных. Я использую Symfony2, и когда сеанс истекает, и я делаю запрос с ajax, форма входа отображается в основной области моего приложения, а не как другое представление, как должно быть. Как решить эту проблему. БлагодаряSession Expire Symfony 2 Ajax
ответ
Я хотел бы предложить создание слушателя событий, который будет прослушивать для каждого запроса:
services.yml:
your_request_listener:
class: Acme\AppBundle\EventListener\RequestListener
arguments: [@security.token_storage]
tags:
- { name: kernel.event_listener, event: kernel.request, method: onRequest }
В этом случае слушатель я хотел бы проверить тип запроса, так это будет быть только слушателем запроса Ajax. Когда запрос является ajax-типом, тогда я бы проверял, закончился ли сеанс - если это так, я бы создал ответ, который будет действительным ответом на запрос ajax (т. Е. JsonResponse
) и установите этот ответ для отправки пользователю.
class RequestListener
{
private $tokenStorage;
public function __construct(TokenStorageInterface $tokenStorage)
{
$this->tokenStorage = $tokenStorage;
}
public function onRequest(GetResponseEvent $event)
{
$request = $event->getRequest();
if (!$request->isXmlHttpRequest()) {
return; //we dismiss requests other than ajax
}
//now you check if user is authenticated/session expired/whatever you need
$token = $this->tokenStorage->getToken();
if ($token === null) {
//now you create response which you would expect in your js doing ajax, for example JsonResponse
$response = new JsonResponse(); //you should give some content here
$event->setResponse($response); //now you override response which will be sent to user
}
}
}
Вы можете использовать entry point, в котором вы проверить, если запрос является запрос AJAX. Если да, вы возвращаете ответ JSON с кодом состояния 401 HTTP. Затем в JS-коде вы проверяете код состояния HTTP. Если 401, перейдите на страницу входа.
Вы можете прочитать мое сообщение here с полным решением (см. Мой собственный ответ на мой вопрос). Это решение основано на этом превосходном post.
- 1. Symfony 2 AJAX session expire
- 2. #php - "page expire" вместо "session expire"
- 3. Session Expire в MVC
- 4. Idhttp post session expire
- 5. PHP Session Expire Перенаправление
- 6. MVC с JQuery: обработка Session Expire
- 7. Symfony 2, ajax
- 8. session expire on time in php
- 9. как отключить сообщения журнала tomcat5 'session expire'?
- 10. Session expire for popup aspx page
- 11. JSP Automatic Redirect After Session Expire/Timeout
- 12. Как реализовать redis session expire в aiohttp
- 13. Symfony 2 Ajax Необъяснимая ошибка
- 14. Symfony 2 - Secure Ajax Controller
- 15. Ratchet without Symfony session
- 16. Symfony sfGuardPlugin session несоответствия
- 17. Symfony default session variabe
- 18. Symfony Session Initialization
- 19. Asp.net Session Expire в ближайшее время на веб-сервере жить
- 20. Asp.net Session Expire беспорядочно на реальном веб-сервере
- 21. session expire at browser close не установлен должным образом django
- 22. Страница перенаправления, если я ввожу прямой url и Session expire
- 23. Symfony, session always return null
- 24. Как вернуть ответ на ajax symfony 2?
- 25. Ajax с HighCharts setData на Symfony 2
- 26. Symfony 2 Отправить json от ajax
- 27. Как сделать/обрабатывать запросы AJAX в Symfony 2
- 28. RedisTemplate expire не работает
- 29. Ajax request and SESSION
- 30. Сбой Symfony 2