2011-11-10 15 views
3

Doctrineとカスタムユーザプロバイダでchain_providerを使用する場合、プロバイダの認証プロバイダも使用すると考えられますか?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ユーザプロバイダが正しく呼び出されることではなく、優れた認証プロバイダによって。工場でサービスとして宣言した "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は名前だけです。

関連する問題