2011-10-27 39 views
10

安裝FOSUserBundle後,現在我試圖登錄用戶/ userpass,但我仍然收到「Bad credentials」消息。這是我的 security.yml:登錄用戶在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" 

任何想法?

的symfony 2.0.4

回答

19

鏈中的供應商是這樣的:

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

爲symfony1.2 2.1,語法稍有變動:chain_provider之間':'和'提供商:',你需要添加額外的按鍵,'鏈:',就像這樣: '提供商: chain_provider: 鏈: 提供商:[in_memory,fos_userbundle]' 有關更多信息,請參見[當前文檔](http://symfony.com/doc/current/book/security.html#using-multiple-user-providers)。 –

5

在你使用了錯誤的提供商防火牆部分:fos_userbundle代替in_memory。如果你願意,你可以chain them

+0

感謝,但它不是working..I現在有 「供應商:in_memory」。 – ziiweb

+1

你在prod或dev env工作嗎?如果prod你清除了你的緩存? – dlondero

2

除了用戶提供的赤岸,我建議你在你的web應用程序編碼您的密碼,您可以通過在線工具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

鏈中的供應商爲symfony1.2 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