用户“Symfony \ Component \ Security \ Core \ User \ User”没有用户提供程序

时间:2011-07-05 19:55:53

标签: php symfony1 doctrine

经过一整天的努力与Symfony 2的简单挣扎没有运气之后,我决定让你们找一个解决方案。

问题在于:我想使用doctrine进行http_basic身份验证,因此系统会提示用户输入保存在数据库中的用户名/密码。

所以,我按照以下步骤操作:

1)使用交互式控制台生成器创建了一个名为User的新实体。

这就是它的样子:

http://pastebin.com/3RzrwFzL

2)如文档中所述,我实现了UserInterface并添加了4个缺失的方法。现在实体看起来像这样:

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 个答案:

答案 0 :(得分:8)

我曾经遇到过这个问题。

这是因为我使用前一个提供程序(in_memory)中的用户进行了记录。必须恢复in_memory部分,注销然后放入新的提供者。

我的猜测:

用户的信息在会话中,因为我们把它从security.yml上取下来所以无法访问它。

答案 1 :(得分: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: /

答案 2 :(得分:0)

你可以省去头痛并尝试symfony UserBundle的朋友。

至少看一下这个包会帮助你学习和修复你自己的代码。它有很多编写良好的代码/示例。

答案 3 :(得分:0)

对我来说在开发环境中出现了问题。之所以发生这种情况,是因为我有来自其他项目的活跃会话。

清理浏览器Cookie有帮助。