记住我创建REMEMBERME cookie的功能很好。当我重新启动浏览器时,cookie也可用,但我没有登录,而且我在Symfony工具栏中像匿名一样进行身份验证。
Normaly当我登录mydomain.com如果我已经登录我将重定向到mydomain.com/home/calendar如果不是我重定向到mydomain.com/login
#security.yml
main:
pattern: ^/.+
switch_user: { role: ROLE_SUPER_ADMIN, parameter: _steal_user }
form_login:
provider: fos_userbundle
csrf_provider: form.csrf_provider
always_use_default_target_path: true
default_target_path: bleep_university_calendar
login_path: /login
check_path: /login_check
remember_me: true
remember_me:
key: "%secret%"
lifetime: 31536000
always_remember_me: true
remember_me_parameter: _remember_me
path: /home/calendar
domain: ~
logout: true
anonymous: false
context: university
任何人都可以解释一下它不起作用的原因吗?
我正在使用Symfony 2.1.7和FOSuserbundle。
在Google Chrome上,Cookie REMEMBERME永远不会删除,我会在所有网址的设置中看到它。但是在Mozilla Firefox上,如果我在URL /登录时重定向,那么remember_me下的属性路径是/ cookie正在删除。就像cookie只在Firefox上删除一样。
这是Firefox上REMEMBERME cookie的值
expires : 1409988370
host : "localhost"
isDomain : false
isHttpOnly : true
isSecure : false
maxAge : undefined
name : "REMEMBERME"
path : "/"
rawValue : "QmxlZXBcTWFzdGVyU2Vydml...WJlOWI3ZTMyNzkxZGQyZGU3"
value : "QmxlZXBcTWFzdGVyU2Vydml...WJlOWI3ZTMyNzkxZGQyZGU3"
答案 0 :(得分:3)
如果您使用的是用户名以外的其他属性来对用户进行身份验证,那么当您的脚本需要其他属性(如电子邮件)时,Cookie可能会保存用户名。
您可以覆盖默认的“记住我”服务行为。请参阅此答案:https://stackoverflow.com/a/20550520/3096524
答案 1 :(得分:1)
@nikolajosipovic是对的。
尝试转到您的用户实体提供商,例如(AppBundle / Entity / User.php)
并向serialize()/ unserialize()方法添加电子邮件:
public function serialize()
{
return serialize(array(
$this->id,
$this->username,
$this->email, //Add email
$this->password,
$this->isActive,
));
}
public function unserialize($serialized)
{
list(
$this->id,
$this->username,
$this->email, //Add email
$this->password,
$this->isActive,
) = unserialize($serialized);
}