2

必要に応じてすべてを実行しましたが、「remember me」トークンが設定されていません。Cookie が設定されている/vendor/symfony/src/Symfony/Component/Security/Http/RememberMe/TokenBasedRememberMeService.phpの部分までコードを追跡しました

$response->headers->setCookie(
        new Cookie(
            $this->options['name'],
            $value,
            $expires,
            $this->options['path'],
            $this->options['domain'],
            $this->options['secure'],
            $this->options['httponly']
        )
    );

$response->headers のダンプを行うと、Cookie の部分は次のようになります。

["cookies":protected]=> array(1) { [""]=> array(1) { ["/"]=> array(1) { ["REMEMBERME"]=> object(Symfony\Component\HttpFoundation\Cookie)#753 (7) { ["name":protected]=> string(10) "REMEMBERME" ["value":protected]=> string(176) "V2Vic3BpblxVc2VyQnVuZGxlXEVudGl0eVxVc2VyOmJXRmliMmRwWlVCbmJXRnBiQzVqYjIwPToxMzM5MjQ5Mjc5OmJjY2QxMWYxNGNkZmQxZmI5ZTNjOTBhYTBiMTEyNjEwYzdkMWYxOGYwYWQzMmMzYmJhYzZlODM3Yjc0Nzc3Mjk=" ["domain":protected]=> NULL ["expire":protected]=> int(1339249279) ["path":protected]=> string(1) "/" ["secure":protected]=> bool(false) ["httpOnly":protected]=> bool(true) } } } } 

Cookie 配列の最初の要素のキーが空です。あれは正しいですか?

それが正しければ、Cookie が設定されていないのはなぜですか?

編集: 私のsecurity.yml:

firewalls:
    main:
        pattern: ^/
        form_login:
            provider: fos_userbundle
            login_path: fos_user_security_login 
            check_path: fos_user_security_check 
        logout:
            path:        _security_logout
            target:      _welcome
        anonymous:    true
        remember_me:
            key:      "%secret%"
            lifetime: 36000
            path:     /
            domain:   ~

さらに情報が必要な場合は、お知らせください。

4

2 に答える 2

3

わかりました、これを修正しました。

その理由は、interactiveloginlistener に関係していました。成功したログインをリッスンしましたが、ヘッダーが送信される前に、新しい RedirectResponse でリダイレクトしましたが、もちろん Cookie は含まれていませんでした。

ふぅ。

于 2012-06-09T12:53:04.887 に答える
1

他の誰かが Cookie が設定されていない理由を理解するのに苦労している場合に備えて、私にとっての問題は次のとおりです。

_remember_meのビルダーを介してフォームにチェックボックスを追加しましたLoginFormType。これは、レンダリングされたときのフィールドの名前が実際login_form[_remember_me]には期待どおりではなかっ _remember_meたことを意味します。

これは、ボックスがチェックされていても、認証システムがログインを記憶する必要がないと認識したため、Cookie が設定されなかったことを意味します。適切なフィールド名を設定するとsecurity.yml修正されました。

于 2016-12-04T20:57:05.420 に答える