2011-12-27 16 views
9

私はSymfony2での認証にFOSUserBundleを使用しています。 「私を覚えている」以外はすべてうまく動作します。私のsecurity.ymlは次のようになります:FOSUserBundleと覚えています

security: 
providers: 
    fos_userbundle: 
     id: fos_user.user_manager 

encoders: 
    'FOS\UserBundle\Model\UserInterface': sha512 

firewalls: 
    main: 
     pattern: ^/ 
     form_login: 
      provider: fos_userbundle 
     logout:  true 
     anonymous: true 
     remember_me: 
      key:  aSecretKey 
      lifetime: 3600 
      path: /
      domain: ~ 

access_control: 
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/admin, role: ROLE_ADMIN } 

role_hierarchy: 
    ROLE_ADMIN:  ROLE_USER 
    ROLE_SUPER_ADMIN: ROLE_ADMIN 

誰かがこれを解決する方法を知っていますか?

答えて

2

Remember meブラウザでdomain(たとえばlocalhost)のCookieを設定できない場合、機能が動作しない可能性があります。この場合、有効なドメイン名としてドメインを設定してください(例:dev.site.com)。また、キャッシュをクリアしたことを確認してください。

+1

感謝を "秘密" を使用

代わりに "キー"。私はこれらの可能性を試してみましたが、問題はログアウトで解決されています:security.ymlで真です。私はこれらの行を削除し、すべて正常に動作します。 – repincln

0

これは、セキュリティremenber_me構成の追加でのセッションの有効期間を私のために働いていないです:

framework: 
    session: 
     default_locale: %locale% 
     auto_start:  true 
     lifetime:  3600 
+1

このセクションはどこに追加する必要がありますか? security.ymlの下に...何? –

10

これは私のために働いていなかった、どちらも私は2つのユーザープロバイダを使用するので:FOSUserBundleとFosFacebookを。

実際にCookieが設定されていましたが、TokenBasedRememberMeServicesのprocessAutoLoginCookieに間違ったプロバイダが使用されていました。

これを修正するには、remember_meセクションのsecurity.ymlに、使用したいプロバイダを指定する必要がありました。

firewalls: 
    main: 
     ... 
     remember_me: 
      key:  "%secret%" 
      lifetime: 2592000 
      path: /
      domain: ~ 
      user_provider: fos_userbundle 

これは他の人にも役立つかもしれません。

+1

Omgベストアンサー! <3 –

+0

これは勝者の答えになるはずです! – Sergiu

5

「アドリアンC」と言われましたが、私にとっては少し変化がありました。私は答えを

firewalls: 
    main: 
     ... 
     remember_me: 
      secret:  "%secret%" 
      lifetime: 2592000 
      path: /
      domain: ~ 
      user_provider: fos_userbundle 
関連する問題