2017-03-10 3 views
0

2番目のデータベースの2番目のマネージャーを作成しました。 このベースでは、私はそれが私のユーザーを含むテーブルを作成します。 問題はsymfonyがこのデータベースからユーザを読み込まないことです。ここ2番目のマネージャーとの認証

は私のconfig.ymlの抽出物である:

教義設定

doctrine: 
dbal: 
    default_connection: default 
    connections: 
     default: 
      driver: pdo_mysql 
      host:  "%database_host%" 
      port:  "%database_port%" 
      dbname: "%database_name%" 
      user:  "%database_user%" 
      password: "%database_password%" 
      charset: UTF8 
     seconddb: 
      driver: pdo_mysql 
      host:  "xx.xx.xx.xx" 
      port:  "3306" 
      dbname: "acme_test" 
      user:  "acmegamestest" 
      password: "mypassword" 
      charset: UTF8 

    # if using pdo_sqlite as your database driver: 
    # 1. add the path in parameters.yml 
    #  e.g. database_path: "%kernel.root_dir%/data/data.db3" 
    # 2. Uncomment database_path in parameters.yml.dist 
    # 3. Uncomment next line: 
    #  path:  "%database_path%" 

orm: 
    default_entity_manager: default 
    auto_generate_proxy_classes: "%kernel.debug%" 
    #naming_strategy: doctrine.orm.naming_strategy.underscore 
    entity_managers: 
     default:  
      connection: default 
      mappings: 
       acmeAdminBundle: ~ 
       acmeBlogBundle: ~ 
       gedmo_translatable: 
        type: annotation 
        alias: GedmoTranslatable 
        prefix: Gedmo\Translatable\Entity 
        is_bundle: false 
        # make sure vendor library location is correct 
        dir: "%kernel.root_dir%/../vendor/gedmo/doctrine-extensions/lib/Gedmo/Translatable/Entity" 
     seconddb: 
      connection: seconddb 
      mappings: 
       acmeJoueurBundle: ~ 

、ここでは私のsecurity.ymlファイルの抜粋です:

encoders: 
    FOS\UserBundle\Model\UserInterface: sha512 
    Acme\JoueurBundle\Entity\Players: 
     algorithm: sha512 
     encode_as_base64: false 

providers: 
    seconddb: 
     entity: 
      class: Acme\JoueurBundle\Entity\Players 
      property: username  
      manager_name: seconddb 
    fos_userbundle: 
     id: fos_user.user_provider.username 

firewalls: 
    administration: 
     pattern: ^/admin 
     provider: fos_userbundle 
     context: administration 
     form_login: 
      #csrf_provider: security.csrf.token_manager 
      login_path : fos_user_security_login 
      check_path : fos_user_security_check 
      failure_path : null 
      default_target_path : /admin     
     logout:  
      path : fos_user_security_logout 
      target : /connexion 
     anonymous: true  
    frontend: 
     pattern: ^/ 
     provider: acme_joueurbundle 
     context: frontend 
     form_login: 
      #csrf_provider: form.csrf_provider 
      login_path : acme_players_login 
      check_path : acme_players_check 
      failure_path : null 
      default_target_path : acme_players_userprofile      
     logout:  
      path : acme_players_logout 
      target : acme_players_login 
     anonymous: true 

と私のエンティティの実装」 AdvancedUserInterface、\ Serializable "

この機能を持つ 私が接続しようとすると

はしかし、私は、ダンプ機能で、このエラーを取得:

enter image description here

とセクションの教義に私はこの取得:

enter image description here

は、あなたが知っていることですソリューション? あなたが私を助けてくれることを願っています。 おかげ

答えて

0

EDIT

ので、エラーはユーザー認証プロバイダのコードのこの部分から来ている:

try { 
    $user = $this->retrieveUser($username, $token); 
} catch (UsernameNotFoundException $e) { 
    if ($this->hideUserNotFoundExceptions) { 
     throw new BadCredentialsException('Bad credentials.', 0, $e); 
    } 
    $e->setUsername($username); 
    throw $e; 
} 

retrieveUserが失敗し、それが悪いcrendentials例外をスローするメソッド。これはまだ呼び出されていないので接続がない理由を説明します。

プロバイダのコードを尋ねる前に、securitydbのプロバイダを作成し、ファイアウォールのフロントエンドにpropibleが存在しないプロバイダacme_joueurbundleを呼び出そうとしたので、security.ymlを見てみましょう。

だから、あなたのsecurity.ymlは次のようになります。

# app/config/security.yml 

[...] 

providers: 
    seconddb: 
     entity: 
      class: Acme\JoueurBundle\Entity\Players 
      property: username  
      manager_name: seconddb 
    fos_userbundle: 
     id: fos_user.user_provider.username 

firewalls: 
    administration: 
     provider: fos_userbundle 
     [...] 
    frontend: 
     provider: seconddb 
     [...] 
+0

変更なし!!それは動作しません。非常に奇妙な!FOSuserbundle、私はWebサイトとAcmeJoueurBundleの管理のためにそれを使用する、私はフロントエンドのプレーヤーのためにそれを使用する! – strauss

+0

わかりませんでした...私はあなたが2番目のデータベースに接続できないと思っていました。あなたの質問は、すでに動作しているようなDoctrine接続とは関係ありません。あなたのエンティティ(少なくとも重要な部分)を追加して、私たちが手助けできるようにしなければなりません。パスワードや塩田が小さすぎるかもしれません。文字列は切り捨てられます。たぶんあなたの小枝の書式が間違っています。考えられる理由はたくさんあります。 –

+0

はい、フォームのログインに接続しようとすると、ダンプが「悪い認証情報」を返し、symfonyがエンティティプレーヤーを読み込まないという印象を受けます.Sqlクエリは2番目のマネージャでは起動しませんが、設定は正しい – strauss

関連する問題