2013-11-20 4 views
5

특정 보안 영역에 대한 액세스 권한이 충분하지 않은지 확인한 후 symfony2에서 사용자가 로그 아웃하도록하고 싶습니다.강제로 사용자 로그 아웃하는 방법 symfony2

나는 함께 시도했다 :

$this->get('request')->getSession()->invalidate(); 

하지만 뭔가 내가/로그 아웃 경로를 사용하여 그를 로그 아웃 할 때까지, 사용자가에서 로그인이 잘못 것으로 보인다.

저는 KayueWordpressBundle을 사용하여 심포니 앱을 워드 프레스 기반 웹 사이트에 연결하여 맞춤형 백 오피스를 만들고 있습니다. 여기

내가이 제발 할 수있는 방법을 내 security.yml 파일

security: 
firewalls: 
    dev: 
     pattern: ^/(_(profiler|wdt)|css|images|js)/ 
     security: false 
    login_firewall: 
     pattern: ^/$ 
     anonymous: ~ 
    secured_area: 
     pattern: ^/ 
     kayue_wordpress: ~ 
     form_login: 
      check_path: /login_check 
      login_path:/
     logout: 
      path: /logout 
      target:/
access_control: 
    - { path: ^/admin, roles: ROLE_ADMIN } 

providers: 
    wordpress: 
     entity: { class: Kayue\WordpressBundle\Entity\User, property: username } 

encoders: 
    Kayue\WordpressBundle\Entity\User: 
     id: kayue_wordpress.security.encoder.phpass 

입니까?

당신이

+0

가능한 중복 [Symfony2 : 컨트롤러에서 수동으로 사용자가 로그인하는 방법 (http://stackoverflow.com/questions/6464754/ symfony2-how-to-log-user-out-manually-in-controller) –

답변

20

당신은 nullsetToken()를 호출하여 로그 아웃을 강제 감사, 이런 식으로 뭔가를 시도 :

$this->container->get('security.context')->setToken(null); 

는 보안 컨텍스트에서 사용자 토큰을 파괴하고 밖으로 사용자가 시작된다.

또한

, 자세한 내용은이 질문을 참조하십시오 Symfony2: how to log user out manually in controller?

+0

고맙습니다. 저의 경우 : –

+0

로그 아웃 핸들러를 등록하면 위의 솔루션에서 logout 핸들러를 호출하지 않습니다. – Jaimin

+1

BTW, 대신'$ this-> container-> get ('security.authorization_checker')'를 사용하십시오 (2.6의 새로운 기능) – Ronan

관련 문제