【发布时间】:2011-08-19 21:48:00
【问题描述】:
我已经建立了一个会话库,但我遇到了一个非常随机的错误(我真的不知道如何对此进行单元测试,所以我只是用日志消息填充了所有内容并等待它再次发生),这会转化为由于会话 ID 不匹配,用户正在注销。
应用程序的流程是这样的:
- 发出了具有有效会话 ID 的请求
- 在数据库中找到该会话 ID 的会话数据
- “最后一个活动”恰好是旧的,因此它在数据库中重新生成和更新
- 新的会话 ID 在响应中发送(作为 cookie)
这几乎总是可以正常工作,但有时下一个请求无法匹配会话 ID,因为(这是我的猜测)它是在我们更新数据库之后发送的(在上一个请求中,它仍在运行),但之前带有新 cookie 的响应进来了。
我是否误解了重新生成会话 ID 的概念?我只是出于安全原因重新生成会话 ID,因此选择登录一年的人仍然会不时更改其会话 ID。
【问题讨论】:
-
不匹配的会话 ID 是与重新生成之前相同还是完全不同?
-
和再生前一样
标签: php unit-testing http session cookies