我的应用在30分钟后会话超时。如果用户激活了“永久登录”功能,则在随后的HTTP请求中,服务器将读取“perm session”cookie并恢复会话。
但是,如果用户在会话过期后没有重新加载或导航到另一个页面,而是单击通过AJAX检索数据的按钮,则会话不会恢复;在应该加载数据的DIV中,会出现一个登录窗口。
这使我假设AJAX调用不带有cookie信息。我纠正了,还是我错过了别的什么?
更新
后端:symfony 1.2(PHP框架), 前端:原型
Update2:这是应用程序中的错误,而不是cookie的问题
答案 0 :(得分:2)
XMLHttpRequest
来电应该像正常一样携带Cookie信息。你可能遇到了一个bug。您确定来自同一域名的电话是什么?
也许你的饼干也到期了?更多信息可能会有所帮助.. :)
答案 1 :(得分:2)
听起来你正在恢复会话,但没有提供新的身份验证cookie。你可能想尝试一种我在我的博客上写过的技术,即在会话超时前提示用户,当他们点击OK更新它时,会提出一个请求用于保持会话和身份验证cookie的活动。您可以在http://farm-fresh-code.blogspt.com找到更多信息。该文章的标题为Client-side Session Termination。