【问题标题】:Symfony2: remember me token is not setSymfony2:记住我令牌未设置
【发布时间】:2012-06-13 01:32:42
【问题描述】:

我做了所有需要的事情,但我的“记住我”标记尚未设置。 我跟踪代码直到 /vendor/symfony/src/Symfony/Component/Security/Http/RememberMe/TokenBasedRememberMeService.php设置cookie的地方

$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) } } } } 

cookies 数组第一个元素的键为空。对吗?

如果正确,为什么没有设置 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:   ~

如果您需要更多信息,请告诉我。

【问题讨论】:

    标签: php cookies symfony


    【解决方案1】:

    好的,我解决了这个问题。

    原因与我的交互式登录监听器有关。 我听取了成功的登录,但在发送标头之前,我使用新的 RedirectResponse 进行了重定向,这当然不包括 cookie。

    呼。

    【讨论】:

      【解决方案2】:

      以防万一其他人也在努力找出未设置 cookie 的原因,这就是我的问题所在。

      我通过LoginFormType 中的构建器将_remember_me 复选框添加到我的表单中,这意味着呈现时字段的名称实际上是login_form[_remember_me]不是 _remember_me 符合预期。

      这意味着即使选中该框,身份验证系统也认为登录信息不希望被记住,因此没有设置 cookie。在security.yml 中设置正确的字段名称修复了它。

      【讨论】:

        猜你喜欢
        • 2017-05-19
        • 1970-01-01
        • 2014-04-20
        • 2020-12-24
        • 2014-09-19
        • 1970-01-01
        • 1970-01-01
        • 2011-07-15
        • 2021-08-12
        相关资源
        最近更新 更多