Во-первых, я прошу прощения за мой плохой английский.
Я здесь, потому что я ищу какой-нибудь способ прослушать событие исключения жадности для перенаправления на страницу входа, если я получу код состояния 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
]);
Заранее спасибо за помощь,
Используйте этот код:
// 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
С уважением!
Других решений пока нет …