2011-07-05 27 views
7

Symfony 2のためのシンプルなタックで一日中苦労した後、解決策を尋ねることにしました。ユーザー "Symfony Component Security Core User User"のユーザープロバイダはありません

問題は次のとおりです。doctrineを使用してhttp_basic認証を行いたいので、データベースに保存されているユーザー名/パスワードの入力を求められます。

1)インタラクティブ・コンソール・ジェネレータを使用したユーザと呼ばれる新しいエンティティを作成:

だから、私はこれらの手順に従いました。

これは、それがどのように見えるかです:私はたUserInterfaceを実施し、4つの行方不明のメソッドが追加されているドキュメントに記載されているように

http://pastebin.com/3RzrwFzL

2)。今エンティティは次のようになります。

http://pastebin.com/Epw3YrwR

3)私はそれを動作させるためにできるだけsecurity.ymlファイルを変更している、そしてそれは次のようになります。

http://pastebin.com/tp6Gd7t7

私はキャッシュをクリアしてapp_dev.php/adminにアクセスしようとしましたが、もちろん私は一日中同じエラーが発生しました:

ユーザー "Symfony \ Component \ Security \ Core \ User \ User "と入力します。

500内部サーバーエラー - のRuntimeException

問題がどこにあるか誰も私を伝えることができますか? 私はこの千種類の方法を試してみましたが、奇妙なことにそれはしばらくの間働いていましたが、平文ではなくエンコーダのアルゴリズムとしてsha1を追加してキャッシュをクリアしようとしたとき、しかしそれ。 symfonyが決めるたびに消去される隠しキャッシュがあるかのようです:D

エラーはエンティティの4つのメソッドにもあるかもしれないと思いますが、何が必要なのかに関するドキュメンテーションがないので修正できません彼らはそうする。

私は現在RC4を使用しています。

ありがとうございました。誰かが助けてくれることを祈っています。

答えて

4

同じ問題がありました。これはうまくいくようです。私は後で開発プロセスでそれを使用して解決策を見つけます。

security: 
    role_hierarchy: 
     ROLE_ADMIN:  ROLE_USER 
     ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH] 


    providers: 
     chain_provider: 
      providers: [in_memory, user_db] 
     in_memory: 
      users: 
       cheese: { password: olo, roles: ROLE_ADMIN } 
     user_db: 
      entity: { class: Abc\BaseBundle\Entity\User, property: username } 


    encoders: 
     Symfony\Component\Security\Core\User\User: plaintext 
     Abc\BaseBundle\Entity\User: plaintext 

    firewalls: 
     dev: 
      pattern: ^/(_(profiler|wdt)|css|images|js)/ 
      security: false 

     panel: 
      pattern: ^/(panel|login_check) 
      anonymous: ~ 
      form_login: 
       login_path: /login 
       check_path: /login_check 
       default_target_path: /panel/ 
      logout: 
       path: /logout 
       target:/
0

symfony UserBundleの友人とお試しください。

少なくとも、そのバンドルを見ると、自分のコードを学習して修正するのに役立ちます。それはよく書かれたコード/例をたくさん持っています。

+0

FOSUserBundleを使ってうまくいっていますが、スリムでカスタマイズ性の高いソリューションを希望する場合は、頭痛の種になる可能性があります。 – David

8

この問題は1回発生しました。

これは、以前のプロバイダ(in_memory)のユーザーがログインしていたためです。in_memoryの部分を復元し、ログアウトしてから新しいプロバイダを置く必要がありました。

私の推測:

ユーザーの情報は、セッションにあったと我々はDEV環境で発生した私の問題のためにsecurity.yml

+1

良いつかみ、常にキャッシュをきれいにしてください。 –

+0

+1キャッシュのクリーニングでこれが解決される – Jonathan

+0

キャッシュがクリーンでエラーが発生した場合はどうですか?私は[この](https://knpuniversity.com/screencast/guard/api-token)を働かせようとした後、同じ問題を実行しています、何か助言?私はつまっています – ReynierPM

0

を、それを脱いだので、それをアクセスもできませんでした。私は他のプロジェクトからの活発なセッションがあるので、起こった。

ブラウザのクッキーをクリーンアップしました。

+0

はい、ブラウザのクッキーをクリアするのも私を助けました!タックス – mario

関連する問題