10

Symfony2 での認証に FOSUserBundle を使用しています。「私を覚えている」以外はすべて正常に機能します。私の security.yml は次のようになります。

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

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

4

4 に答える 4

11

FOSUserBundle と FosFacebook の 2 つのユーザー プロバイダーを使用したため、これも機能しませんでした。

実際には Cookie が設定されていましたが、TokenBasedRememberMeServices、processAutoLoginCookie で間違ったプロバイダーが使用されていることがわかりました。

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

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

たぶん、これは他の誰かにも役立ちます。

更新: Symfony の新しいバージョンでは、remember_me の下の「キー」が「シークレット」と呼ばれるようになったため、応答を変更しました。

于 2015-02-27T09:46:20.820 に答える
5

「Adrian C」が言ったように、少し変更を加えるとうまくいきました。

代わりに「キー」「シークレット」を使用しました

 firewalls:
     main:
         ...
         remember_me:
             secret:      "%secret%"
             lifetime: 2592000
             path:     /
             domain:   ~
             user_provider: fos_userbundle
于 2016-03-25T23:20:50.507 に答える
2

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

于 2011-12-28T10:18:14.353 に答える
0

セキュリティ remenber_me 構成を追加して、セッションの有効期間を設定するとうまくいきます。

  framework:
    session:
        default_locale: %locale%
        auto_start:     true
        lifetime:       3600
于 2012-01-15T12:56:19.880 に答える