2011-11-10 3 views
3

Doctrine 및 사용자 정의 사용자 공급자에서 chain_provider를 사용하는 경우 공급자의 인증 공급자도 사용한다고 가정합니까?chain_provider 및 인증 공급자

providers: 
    chain_provider: 
     providers: [doctrine, egzakt_backend_ldap] 
    doctrine: 
     entity: { class: Egzakt\Backend\UserBundle\Entity\User } 
    egzakt_backend_ldap: 
     id: egzakt_backend_ldap.security.user.provider 

firewalls: 
    secured_area: 
     pattern: /admin/ 
     form_login: 
      provider: chain_provider 
      check_path: /admin/login_check 
      login_path: /admin/login 

문제는 egzakt_backend_ldap 사용자 제공자가 아니라 좋은 인증 공급자가 제대로라고한다는 것입니다 : 아래에 설명 된대로

가 나는 chain_provider에서 사용자 지정 사용자 공급자를 사용하여 문제를 얻었다. 내 공장에서 서비스로 선언 한 "LdapAuthenticationProvider"대신 "Symfony \ Component \ Security \ Core \ Authentication \ ProviderDaoAuthenticationProvide r"에 의해 호출되며 항상 "제시된 암호는 유효하지 않습니다"를 반환합니다. 좋은 인증 공급자를 사용하여 자격 증명의 유효성을 검사하지 않습니다.

그러나 엔트리 포인트를 직접 사용하는 경우 작동합니다. 교리가 실패 할 경우 문제는 내가 로그인 교리 및 LDAP을 모두 사용하고자하는 것입니다, 그것은 LDAP에 다시 떨어진다 :이 방법으로

firewalls: 
    secured_area: 
     pattern: /admin/ 
     egzakt_backend_ldap: 
      check_path: /admin/login_check 
      login_path: /admin/login 

, 그것은 인증 공급자 및 사용자 제공자 선을 사용합니다.

누구나 내가 누락 된 부분에 대한 아이디어가 있습니까?

답변

1

당신은이에 설정의 당신의 providers 부분을 변경해야합니다 :

providers: 
    chain_provider: 
     chain: 
      providers: [doctrine, egzakt_backend_ldap] 
doctrine: 
    entity: { class: Egzakt\Backend\UserBundle\Entity\User } 
egzakt_backend_ldap: 
    id: egzakt_backend_ldap.security.user.provider 

당신은 chain 키를 놓쳤다는 chain_provider 그냥 이름입니다.

관련 문제