在Symfony中使用内存提供程序登录用户

zii*_*web 10 symfony fosuserbundle

安装FOSUserBundle之后,现在我尝试使用user/userpass登录,但我仍然收到"Bad credentials"消息.这是我的security.yml:

security:
    encoders:
        Symfony\Component\Security\Core\User\User: plaintext

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

    providers:
        in_memory:
            users:
                user:  { password: userpass, roles: [ 'ROLE_USER' ] }
                admin: { password: adminpass, roles: [ 'ROLE_ADMIN' ] }
        fos_userbundle:
            id: fos_user.user_manager

    firewalls:
        main:
            pattern: ^/
            form_login:
                provider: fos_userbundle
            logout:       true
            anonymous:    true
            #anonymous: ~
            #http_basic:
            #    realm: "Secured Demo Area"
Run Code Online (Sandbox Code Playgroud)

任何的想法?

symfony 2.0.4

Ste*_*ato 20

像你这样链接你的提供者:

providers:
    chain_provider:
        providers: [in_memory, fos_userbundle]
    in_memory:
        users:
            user:  { password: userpass, roles: [ 'ROLE_USER' ] }
            admin: { password: adminpass, roles: [ 'ROLE_ADMIN' ] }

    fos_userbundle:
        id: fos_user.user_manager

    firewalls:
        main:
            pattern: ^/
            form_login:
                provider: chain_provider
            logout:       true
            anonymous:    true
            switch_user:  true
        dev:
            pattern:  ^/(_(profiler|wdt)|css|images|js)/
            security: false
Run Code Online (Sandbox Code Playgroud)

  • 对于Symfony 2.1,语法略有改变:在`chain_provider:`和`providers:`之间,你需要添加一个额外的键,`chain:`,如下所示:`providers:chain_provider:chain:providers:[in_memory,fos_userbundle ]`有关详细信息,请参阅[当前文档](http://symfony.com/doc/current/book/security.html#using-multiple-user-providers). (5认同)

小智 5

在防火墙部分,您使用的是错误的提供程序:fos_userbundle而不是in_memory.你可以根据需要链接它们.