2014-08-27 9 views
1

구성 프로세스에서 인스턴스화 (Docs), 서비스를 구성하기 위해 내 프로젝트에서 Symfony Service Configurator를 사용하고 있습니다. 컨테이너를 삽입 할 때 현재 사용자를 기록해야합니다. 나는 토큰 형태의 Security.context 서비스를 얻으려고했지만 항상 NULL을 가졌다. Configurator 구조체에 Security.context 만 주입하려고 시도했지만 동일한 결과가 나타납니다.symfony 서비스 구성자 : security.context가 포함 된 getToken이 NULL입니다.

모든 아이디어 pls

감사합니다.

 
class MyConfigurator 
{ 
    private $container; 

    public function __construct(ContainerInterface $container) 
    { 
     $this->container = $container; 
    } 


    public function configure() 
    { 
     $user = $this->container->get('security.context')->getToken(); 
     var_dump($user); // = NULL 
    } 
} 
+0

당신은 로그인? –

+0

@ skowron-line 예 로그인했습니다. –

+0

check http://stackoverflow.com/questions/11167979/authentication-token-always-null-in-kernel-request-event-in-symfony-2?rq=1 to 도움이되는지 확인하십시오. –

답변

1

세션에서 UserId를 가져 와서 데이터베이스에서 현재 사용자를 가져 와서 문제를 해결합니다.

UserId는 이전에 내 프로젝트의 AuthenticationListener에 의해 설정되었습니다. 그래서 내가 이렇게 될 내 구성 기 구조를 수정

 
    /** 
    * @param EntityManager $em 
    * @param Session $session 
    */ 
    public function __construct(EntityManager $em, Session $session) 
    { 
     $this->em = $em; 
     $this->session = $session; 
    } 
0

더 좋은 방법이 있어야한다 :

use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage; 

class MyConfigurator 
{ 
    private $tokenStorage; 

    public function __construct(EntityManager $em, TokenStorage $tokenStorage) 
    { 
     $this->em = $em; 
     $this->tokenStorage= $tokenStorage; 
    } 

    public function configure() 
    { 
     $user = $this->tokenStorage->getToken()->getUser(); 
    } 

    ....