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

Ton*_*nov 7 php doctrine symfony1

经过一整天的辛苦挣扎,没有运气的Symfony 2,我决定问你们一个解决方案.

这里的问题是:我想作使用学说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.

在此先感谢,希望有人会帮助.

小智 9

我曾经遇到过这个问题.

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

我猜:

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


小智 5

有同样的问题。看来这可行。我只会在开发过程中使用它,稍后我会找到解决方案。!

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: /
Run Code Online (Sandbox Code Playgroud)