让我给你一个场景。我有一个AJAX调用,它调用/auth-该页面依次检查用户是否通过了身份验证,并设置了几个会话变量(下面的代码)。
$session = $this->getRequest()->getSession();
$session->set('fbid', $fbid);
$session->set('name', $name);
// not sure if this is even needed - get the same with or without
//$session->save();
现在,如果我转到另一个页面并尝试访问该会话,它会返回为空。
如果我在一个常规页面(而不是通过XMLHttpRequest/AAJAX访问的页面)上设置这些会话,它就可以正常工作。
以下是我在中的会话设置
config.yml
以下为:
session:
cookie_lifetime: 3600
cookie_httponly: false
我想问题可能是
httponly
,但这并没有起到作用。
有什么建议吗?我是不是错过了什么?
*更新*
以下是我的安全/防火墙设置:
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
login:
pattern: ^/demo/secured/login$
security: false
secured_area:
pattern: ^/demo/secured/
form_login:
check_path: /demo/secured/login_check
login_path: /demo/secured/login
logout:
path: /demo/secured/logout
target: /demo/
我根本没有更改防火墙设置,据我所知,这应该不会影响
/auth
通过XMLHttpRequest调用。
*更新2*
我最后添加了
$session->shutdown()
在两个集合之后(是的,我知道shutdown不是Session对象方法)。它最终出现了一个错误,但正因为如此,它才开始工作,并将其保存到$_SESSION。因此,如果该错误迫使它保存到$_SESSION,那么必须有一个实际的方法来强制保存。真奇怪。。