我根据需要做了一切,但我没有设置“记住我”的标记。 我跟踪代码直到部分进入 设置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->标头时,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: ~
如果您需要更多信息,请与我们联系。
答案 0 :(得分:3)
好的,我已经解决了这个问题。
原因与我的interactiveloginlistener有关。 我听了成功的登录,但在发送标题之前,我使用新的RedirectResponse重定向,当然这不包括cookie。
呼。
答案 1 :(得分:1)
以防万一其他人也在努力弄清楚为什么没有设置cookie,这就是我的问题所在。
我通过_remember_me
中的构建器向我的表单添加了LoginFormType
复选框,这意味着呈现时字段的名称实际为login_form[_remember_me]
,不是 { {1}}如预期的那样。
这意味着身份验证系统将登录视为即使在检查框时也不想记住,因此没有设置cookie。在_remember_me
中设置正确的字段名称,修复它。