2014-12-30 4 views
1

나는 프레임 워크를 사용하지 않고 순수 PHP로 코딩 한 오래된 응용 프로그램이 있습니다.Symfony 2 FosUserBundle 사용자 연결

그리고 웹 사이트에 연결할 수있는 매우 간단한 사용자 시스템을 구축합니다.

내 V2에서는 Symfony2 Framework를 사용하기 시작했습니다.

그러나 사용자가 웹 사이트에 연결하면 이전 시스템과 함께 첫 번째 응용 프로그램을 건너야하고 Symfony에서 코드하는 새 모듈을 사용할 때 FosUserBundle을이 모듈의 FosUserBundle에 연결하려고합니다. 웹 사이트.

내 질문은 : 어떻게 그냥 컨트롤러를 사용하여 일부 템플릿을 사용하지 않고 컨트롤러의 Symfony 응용 프로그램에 연결할 수 있습니까?

감사합니다.

저는 그가 웹 사이트의 첫 번째 부분에 연결되어 있다면 사용자의 이름과 변수가 있음을 알리고 싶습니다.

+0

나는이 부분을 이해하지 않는다 : "어떻게 난 그냥 컨트롤러를 사용하여, 사용하지 않고 컨트롤러 심포니 응용 프로그램에서 몇 가지 템플릿을 그에게 연결할 수 없습니다.". 여기에서 : "나는 그가 웹 사이트의 첫 번째 부분에 연결되어 있다면 사용자의 이름이있는 변수가 있음을 알리고 싶습니다." 나는'sessions'을 사용한다고 말할 것입니다. –

+0

Thats mean : 사용자가 첫 번째 부분에 로그인하여 양식없이 automaticlly 컨트롤러에 넣는 경우 – shmoolki

+0

앱의 첫 번째 부분에서 세션을 설정해야합니다. 그런 다음 컨트롤러 읽기 세션에서 앱의 두 번째 부분에서 인증해야합니다. fosuserbundle을 사용하여 원하는 위치로 리디렉션하십시오. –

답변

1

코드는 다음과 같이 뭔가를 이동해야합니다

use Symfony\Component\EventDispatcher\EventDispatcher; 
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken; 
use Symfony\Component\Security\Http\Event\InteractiveLoginEvent; 

public function authenticateAction() 
{ 

    // ... fetch user data preferably from session 
    // find user using Entity Manager and store user object into $user variable 


    // Here, "public" is the name of the firewall in your security.yml 
    $token = new UsernamePasswordToken($user, $user->getPassword(), "public", $user->getRoles()); 
    $this->get("security.context")->setToken($token); 

    // Fire the login event 
    // Logging the user in above the way we do it doesn't do this automatically 
    $event = new InteractiveLoginEvent($request, $token); 
    $this->get("event_dispatcher")->dispatch("security.interactive_login", $event); 
    // maybe destroy session and redirect out here 

} 
관련 문제