[GUZZLE] [SYMFONY3] событие исключения жрета прослушивания

Во-первых, я прошу прощения за мой плохой английский.

Я здесь, потому что я ищу какой-нибудь способ прослушать событие исключения жадности для перенаправления на страницу входа, если я получу код состояния 401.

Я обнаружил событие «PostTransactionEvent», позволяющее получить структуру данных моего ответа. Это делает его работу, но я не могу перенаправить на страницу входа. Похоже на то RedirectResponse метод не был выполнен.

services.yml:

    glpi.expire_listener:
class: GlpiBundle\Expire\ExpireListener
arguments: ["@router","@request_stack"]
tags:
- { name: kernel.event_listener, event: guzzle_bundle.post_transaction, method: check }

ExpireListener.php

namespace GlpiBundle\Expire;

use EightPoints\Bundle\GuzzleBundle\Events\GuzzleEventListenerInterface;
use EightPoints\Bundle\GuzzleBundle\Events\PostTransactionEvent;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpKernel\Event\FilterResponseEvent;

class ExpireListener implements GuzzleEventListenerInterface
{
protected $service_name;

protected $request_stack;

public function __construct($router,$request_stack)
{
$this->router = $router;
$this->request_stack = $request_stack;
}

public function check(PostTransactionEvent $event)
{

$response_transaction = $event->getTransaction();$e = new ExpireApi();
$available = $e->deconnect($response_transaction);

if ($available) {
return new RedirectResponse($this->router->generate('logout'));

}

$event->setTransaction($response_transaction);
}

public function setServiceName($serviceName){
$this->service_name = $serviceName;

}
}

запрос :

            $reponse_categories =$client->get('/apirest.php/itilcategory?searchText[itilcategories_id]='.self::ID_CAMPUS_ID,
[
"headers"=>
[
"App-Token"=>TOKEN,
"Session-Token"=>SESSION
],
'exceptions'=>false
]);

Заранее спасибо за помощь,

0

Решение

Используйте этот код:

// redirect to login page
$redResponse = new RedirectResponse( $this->router->generate('login') );
$redResponse->send();

Вот полный код:

https://github.com/viher3/yuwik-frontend/blob/develop/src/EventListeners/Guzzle/ExpiredJwt.php

С уважением!

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector