2012-07-13 2 views
3

내 응용 프로그램에 기본 폼 로그인 인증이 있고 onAuthenticationSuccess() 메소드에서 세션 변수를 설정하는 AuthenticationHandlerInterface를 사용하여 핸들러를 설정합니다.사용자 전환 중에 인증 핸들러가 호출되지 않음

문제는 ROLE_ALLOWED_TO_SWITCH를 사용하여 다른 사용자로 전환 할 때 내 처리기가 더 이상 호출되지 않고 내가 설정 한 세션 변수가 전환하기 전에 사용자의 설정대로 유지된다는 것입니다.

예 : myVar에가 유지 : 사용자 핸들러가없는 호출

  • Y
  • 사용자로 전환 세션 VAR의 (인증 처리기 내부) X-하는 myVar에> someAttribute
  • 설정 X
    • 로깅 동일한 값을 유지합니다.

    (myVar = X-> someAttribute는 좋은 예가 아닙니다. 하지만) 문제를 단순화

    감사

    하기 위해 보안 토큰 개체에서 액세스를했다

    편집 : 보안 구성 요소의 성공은 현재 사용자를 전환

    firewalls: 
        main: 
         pattern: ^/ 
         anonymous: ~ 
         switch_user: { role: ROLE_ADMIN, parameter: _switch } 
         form_login: 
          provider: sso 
          success_handler: authentication_handler 
          login_path: /login 
          check_path: /login_check 
         logout: 
          path: /logout 
          target: /home 
    

    security.yml
  • +0

    설정을 표시 할 수 있습니까? security.yml? – Besnik

    답변

    6

    의 추출물, 다음 이벤트 클래스와 함께 security.switch_user 이벤트를 디스패치합니다 : https://github.com/symfony/symfony/blob/2.0/src/Symfony/Component/Security/Http/Event/SwitchUserEvent.php.

    이 이벤트를 청취하고 싶을 수도 있고, 청취자가 호출 될 때 논리를 수행 할 수도 있습니다. http://symfony.com/doc/current/cookbook/service_container/event_listener.html

    services: 
        rocky.balboa.listener.security_switch_user: 
         class: Rocky\BalboaBundle\Listener\SecuritySwitchUserListener 
         tags: 
          - { name: kernel.event_listener, event: security.switch_user, method: onSecuritySwitchUser } 
    

    을 :

    는 청취자의 심포니 요리 책 항목을 읽고,이 이벤트를 수신합니다.

    // src/Rocky/BalboaBundle/Listener/SecuritySwitchUserListener.php 
    
    namespace Rocky\BalboaBundle\Listener; 
    
    use Symfony\Component\Security\Http\Event\SwitchUserEvent; 
    
    class SecuritySwitchUserListener 
    { 
        public function onSecuritySwitchUser(SwitchUserEvent $event) 
        { 
         $newUser = $event->getTargetUser(); 
        } 
    } 
    
    +0

    그리고 어떻게 그 이벤트를 듣고, 샘플 코드를 가지고 있습니까? 감사합니다 – Yoot

    +0

    내 대답 업데이트,이 더 많은 도움이되기를 바랍니다 :) – AdrienBrault

    +0

    고마워요, 그렇습니다;) – Yoot

    관련 문제