【问题标题】:CodeIgniter "sess_time_to_update" and Indy CookiesCodeIgniter "sess_time_to_update" 和 Indy Cookies
【发布时间】:2012-03-22 21:21:31
【问题描述】:

我有这个 horribly stripped delphi code 基本上登录到服务器,将 cookie 保存在 global cookie 管理器中,然后在线程中上传文件(使用 Delphi 2010 + Indy 10.4736)

每个线程都会读取全局 cookie 管理器并上传文件。服务器端,我使用 PHP 和 CodeIgniter

一切正常,除了 CodeIgniter 在配置中有这个 sess_time_to_update 设置。

此 *sess_time_to_update* 默认为 300 秒,之后 CodeIgniter completely regenerate the session id

这对于安全性来说很好,但这也会使我在 indy 中的登录/cookie 信息无效。

我的问题是:如何避免这种情况调整 *sess_time_to_update*? Indy 中是否有一些设置可以让它知道会话 ID?我应该添加一个计时器并每 300 秒(或更短)自动重新登录吗?让 Indy 处理这种情况的最佳方法是什么?

谢谢!

编辑 FWIW:全局cookie管理器包含something like this

【问题讨论】:

    标签: php delphi codeigniter cookies indy


    【解决方案1】:

    当 CodeIgniter 生成一个新会话时,它应该在它发送的每个响应的 cookie 中包含会话 ID。更新您的全局 cookie 列表,以便后续请求将使用新 ID,而不是继续使用原始值。

    【讨论】:

    • 我没有访问 old 会话 id 的 pb(来自全局 cookie 管理器),但我找不到 new 会话 id响应(即IdHTTP.Response.RawHeaders.Text)。你的意思是我应该从 PHP 脚本发送新的会话 ID?
    • 如果 CodeIgniter 正在更改会话 ID 并希望延长会话能够保持打开状态,那么它需要以某种方式将新的会话 ID 发送回客户端,否则更改将毫无意义身份证;它可以完全使会话过期。 Cookie 是向客户端发送此类信息的常用方式。您还如何收到有关更改的通知?
    • 是的,我知道,但正如我所说,我在 Indy.Response 和 Indy 的 @987654323 中都找不到 new 会话 ID @。因此,除非我重新登录 再次显式发送会话 id,否则 cookie 管理器将坚持使用旧的会话 id
    • 好的,结果发现,使用 IdHTTP.Request.RawHeaders 添加 cookie 会导致 indy 无法正确处理 cookie。我删除了该代码并确保全局 cookie 管理器已更新,现在一切正常
    猜你喜欢
    • 2013-09-22
    • 1970-01-01
    • 1970-01-01
    • 2012-12-06
    • 1970-01-01
    • 2012-06-19
    • 1970-01-01
    • 2012-12-21
    • 1970-01-01
    相关资源
    最近更新 更多