2011-10-27 12 views
10

después de instalar FOSUserBundle, ahora estoy tratando de iniciar sesión con user/ userpass, pero sigo recibiendo el mensaje "Bad credentials". Este es mi security.yml:Usuario de inicio de sesión utilizando el proveedor de memoria en Symfony

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" 

Alguna idea?

Symfony 2.0.4

Respuesta

19

Cadena sus proveedores como este:

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 
+5

Para Symfony 2.1, la sintaxis ha cambiado ligeramente: entre 'chain_provider:' y 'proveedores:', es necesario añadir una tecla adicional, 'cadena:', así: los proveedores de ': chain_provider: cadena: proveedores : [in_memory, fos_userbundle] ' Consulte la [documentación actual] (http://symfony.com/doc/current/book/security.html#using-multiple-user-providers) para obtener más información. –

5

En la sección cortafuegos que está utilizando el proveedor equivocado: en lugar de fos_userbundle in_memory. Puede chain them si lo desea.

+0

gracias pero no es working..I tienen ahora "proveedor: in_memory". – ziiweb

+1

¿Estás trabajando en prod o dev env? Si prod eliminaste tu caché? – dlondero

2

Además de un proveedor de Chian de usuarios, sugiero que le permite codificar su contraseña en su aplicación web, se puede codificar mediante una herramienta en línea sh1 link to encode online.

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 
0

Chain sus proveedores para Symfony 2.3 como este:

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 
Cuestiones relacionadas