2013-06-11 4 views
6

사용자 로그인 후에 함수를 호출 할 수 있는지 궁금합니다.사용자 로그인 후 메서드 호출

$point = $this->container->get('process_points'); 
$point->ProcessPoints(1 , $this->container); 
+1

GitHub가 현재 다운되었으므로 완전한 대답을 제공 할 수는 없지만이를 수행하는 방법은 로그인을 담당하는 FOSUserBundle 컨트롤러를 재정의하는 것입니다. –

답변

26

당신은 FOSUserEvents class에서 화재가 FOSUserBundle 이벤트를 찾을 수 있습니다 여기에

내가 전화 할 코드입니다.

/** 
* The SECURITY_IMPLICIT_LOGIN event occurs when the user is logged in programmatically. 
* 
* This event allows you to access the response which will be sent. 
* The event listener method receives a FOS\UserBundle\Event\UserEvent instance. 
*/ 
const SECURITY_IMPLICIT_LOGIN = 'fos_user.security.implicit_login'; 

해당 이벤트에 접선에 대한 문서가 Hooking into the controllers 문서 페이지에서 찾을 수 있습니다 : 더 구체적으로, 이것은 당신이 찾고있는 일이다. 귀하의 경우에는 다음과 같이 구현해야합니다 :

그런 다음 수신기로 서비스를 정의하고 컨테이너를 주입해야합니다. 또는 전체 컨테이너가 아닌 필요한 서비스 만 주입 할 수도 있습니다.

services: 
    acme_user.login: 
     class: Acme\UserBundle\EventListener\LoginListener 
     arguments: [@container] 
     tags: 
      - { name: kernel.event_subscriber } 

overriding the controller을 포함하는 또 다른 방법이있다, 그러나 문서에 언급 한 바와 같이 정확히 깨끗하지 그리고 FOSUserBundle 변경 (시, 또는 오히려) 경우 휴식을 결합, 그래서 당신은 자신의 코드를 복제해야합니다.

+0

고마워, 정말로 고마워. 나는 이것을 혼자서 알아 내지 못했을거야! –

+1

"자동 로그인"을들을 수있는 방법이 있습니까? 사용자가 로그인을 클릭 할 때만 듣는 것이 아닙니다. 예 : 사용자가 (나를 기억하고) 로그인하고 다음에 그가 이미 로그인 할 수있는 페이지를 방문 할 때 다음을 기다리지 만 이것을 듣고 싶습니다. 저는 컨트롤러를 청취하고 사용자가 보안 컨텍스트에 있는지 확인하지만 symfony의 "보안"부분에서 어떤 것을 듣고 싶습니다. – EnchanterIO

+0

단순히 쿠키를 사용하여 사용자를 인증하기 때문에 실제 로그인이 일어나지 않기 때문에 아니오. –

관련 문제