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

时间:2021-11-17 19:51:05

after installing FOSUserBundle, now Im trying to login with user/ userpass but I still get the "Bad credentials" message. This is my security.yml:

安装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"

Any idea?

任何想法?

symfony 2.0.4

symfony 2.0.4

4 个解决方案

#1


20  

Chain your providers like this:

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

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

#2


5  

In the firewall section you're using the wrong provider: fos_userbundle instead of in_memory. You can chain them if you want.

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

#3


2  

In addition to a chian of Users provider, i suggest you to encode your password in your web application, you can encode by a tools online sh1 link to encode online.

除了用户提供商之外,我建议您在Web应用程序中对密码进行编码,您可以通过工具在线sh1链接进行编码以进行在线编码。

encoders:
    "Symfony\Component\Security\Core\User\User":
        algorithm:   sha1
        iterations: 1
        encode_as_base64: false
    "FOS\UserBundle\Model\UserInterface": sha512

providers:
chain_provider:
    providers: [in_memory, fos_userbundle]
in_memory:
    users:
        user:  { password: 45f106ef4d5161e7aa38cf6c666607f25748b6ca, roles: [ 'ROLE_USER' ] } # userpass as password
        admin: { password: 74913f5cd5f61ec0bcfdb775414c2fb3d161b620, roles: [ 'ROLE_ADMIN' ] } # adminpass as password

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

#4


0  

Chain your providers for symfony 2.3 like this:

将您的提供商链接到symfony 2.3,如下所示:

providers:

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

    fos_userbundle:
        id: fos_user.user_manager

    chain_provider:
        chain:
            providers: [in_memory, fos_userbundle]

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

#1


20  

Chain your providers like this:

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

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

#2


5  

In the firewall section you're using the wrong provider: fos_userbundle instead of in_memory. You can chain them if you want.

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

#3


2  

In addition to a chian of Users provider, i suggest you to encode your password in your web application, you can encode by a tools online sh1 link to encode online.

除了用户提供商之外,我建议您在Web应用程序中对密码进行编码,您可以通过工具在线sh1链接进行编码以进行在线编码。

encoders:
    "Symfony\Component\Security\Core\User\User":
        algorithm:   sha1
        iterations: 1
        encode_as_base64: false
    "FOS\UserBundle\Model\UserInterface": sha512

providers:
chain_provider:
    providers: [in_memory, fos_userbundle]
in_memory:
    users:
        user:  { password: 45f106ef4d5161e7aa38cf6c666607f25748b6ca, roles: [ 'ROLE_USER' ] } # userpass as password
        admin: { password: 74913f5cd5f61ec0bcfdb775414c2fb3d161b620, roles: [ 'ROLE_ADMIN' ] } # adminpass as password

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

#4


0  

Chain your providers for symfony 2.3 like this:

将您的提供商链接到symfony 2.3,如下所示:

providers:

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

    fos_userbundle:
        id: fos_user.user_manager

    chain_provider:
        chain:
            providers: [in_memory, fos_userbundle]

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