xil*_*il3 4 php ajax session symfony symfony-2.1
让我给你一个场景.我有一个调用/ auth的AJAX调用 - 该页面依次检查用户是否经过身份验证并设置了几个会话变量(下面的代码).
$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();
Run Code Online (Sandbox Code Playgroud)
现在,如果我转到另一个页面并尝试访问该会话,它将返回空白状态.
如果我在常规页面上设置这些会话(不是通过XMLHttpRequest/AJAX访问的那个),它可以正常工作.
以下是我的会话设置config.yml
:
session:
cookie_lifetime: 3600
cookie_httponly: false
Run Code Online (Sandbox Code Playgroud)
我认为问题可能已经存在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/
Run Code Online (Sandbox Code Playgroud)
我根本没有改变防火墙设置,而且据我所知,它不应该/auth
通过XMLHttpRequest 影响调用.
*更新2*
我最终$session->shutdown()
在2组之后添加(是的,我知道shutdown不是Session对象方法).它最终得到一个错误,但由于它开始工作,它实际上将它保存到$ _SESSION.因此,如果该错误迫使它保存到$ _SESSION,则必须有一个强制保存的实际方法.真奇怪..
xil*_*il3 10
我弄清楚问题是什么.
第一个会话是在生产环境(通过AJAX/XMLHttpRequest调用的操作)上创建的,我正在测试它的下一个页面实际上是在开发环境中.当时,我从未想到Symfony 2实际上是在不同的地方保存prod和dev的会话 - PHP通常有一个默认位置,可以将它们全部保存.
Symfony 2覆盖了默认设置session.save_path
并为每个设备自己设置了 - 不幸的是,在我发现它之前的一天浪费了.
还写了一篇关于它的文章,所以其他人不必经历同样的问题.
http://jondev.net/articles/Reasons_why_Symfony_2_sessions_might_not_always_persist
归档时间: |
|
查看次数: |
3960 次 |
最近记录: |