the node must fos_user fos db_driver configured child php symfony fosuserbundle symfony-security

php - node - Ha solicitado un servicio inexistente "security.context"



symfony 4 security (2)

El servicio security.context quedó en desuso en la versión 2.6 y se dividió en dos nuevos servicios: security.authorization_checker y security.token_storage .

Algunos usos diferentes de la versión anterior del framework:

// Symfony 2.5 $user = $this->get(''security.context'')->getToken()->getUser(); // Symfony 2.6 $user = $this->get(''security.token_storage'')->getToken()->getUser(); // Symfony 2.5 if (false === $this->get(''security.context'')->isGranted(''ROLE_ADMIN'')) { ... } // Symfony 2.6 if (false === $this->get(''security.authorization_checker'')->isGranted(''ROLE_ADMIN'')) { ... }

Más información en this anuncio.

Espero que esto ayude

creo servicio pero no funciona

services: redirectionListener: class: Front/EcommerceBundle/Listener/RedirectionListener arguments: ["@service_container","@session"] tags: - { name: kernel.event_listener, event: kernel.request, method: onKernelRequest }

y esta mi clase

namespace Front/EcommerceBundle/Listener; use Symfony/Component/DependencyInjection/ContainerBuilder; use Symfony/Component/HttpFoundation/Session/Session; use Symfony/Component/HttpFoundation/RedirectResponse; use Symfony/Component/HttpKernel/Event/GetResponseEvent; class RedirectionListener { public function __construct(ContainerBuilder $container, Session $session) { $this->session = $session; $this->router = $container->get(''router''); $this->securityContext = $container->get(''security.context''); } public function onKernelRequest(GetResponseEvent $event) { $route = $event->getRequest()->attributes->get(''_route''); if ($route == ''livraison'' || $route == ''validation'') { if ($this->session->has(''panier'')) { if (count($this->session->get(''panier'')) == 0) $event->setResponse(new RedirectResponse($this->router->generate(''panier''))); } if (!is_object($this->securityContext->getToken()->getUser())) { $this->session->getFlashBag()->add(''notification'',''Vous devez vous identifier''); $event->setResponse(new RedirectResponse($this->router->generate(''fos_user_security_login''))); } } } }

ServiceNotFoundException en la línea 268 de Container.php: ha solicitado un servicio inexistente "security.context".


El siguiente ejemplo funcionará:

/*Symfony 4.1.3*/ $user = $this->get(''security.token_storage'')->getToken()->getUser(); echo $user->getId(); // USER ID SESSION