【问题标题】:Codeigniter User Sessions ValidationCodeigniter 用户会话验证
【发布时间】:2014-09-03 19:08:27
【问题描述】:

所以我正在考虑使用 CodeIgniter 来构建一个应用程序,以了解我的客户可以在哪里注册等。但是,我一直在查看有关会话的文档,我对 cookie 数据的方式有点困惑/会话数据被验证。有人可以帮我解决这个问题吗?我将解释我认为它是如何工作的。

用户登录 -> 创建会话并将会话 ID 和电子邮件存储在 cookie 中 -> 在每个页面加载时,都会在数据库中检查 cookie 数据,以确认用户会话 ID 与他们的用户代理、IP 或其他内容匹配?

我很抱歉这是否严重错误,但我很难理解确保会话安全的逻辑。感谢您的帮助!

【问题讨论】:

    标签: php mysql codeigniter session cookies


    【解决方案1】:

    这直接来自 Codeigniter 手册:

    http://ellislab.com/codeigniter/user-guide/libraries/sessions.html

    会话如何工作?

    当页面被加载时,会话类将检查用户的会话 cookie 中是否存在有效的会话数据。如果会话数据不存在(或已过期),则会创建一个新会话并将其保存在 Cookie 中。如果会话确实存在,则其信息将被更新并且 cookie 将被更新。每次更新都会重新生成 session_id。

    请务必了解,一旦初始化,Session 类就会自动运行。您无需执行任何操作即可导致上述行为发生。正如您将在下面看到的那样,您可以使用会话数据,甚至可以将您自己的数据添加到用户的会话中,但是读取、写入和更新会话的过程是自动的。

    【讨论】:

    • 是的,这直接来自我的帖子。 “我一直在查看有关会话的文档,我对如何验证 cookie 数据/会话数据感到有些困惑。”如果我没有通过阅读文档得到它,我认为我不会在你的答案中阅读它的引用版本。我要求一个体面的理解。
    • 上面说的很好理解,但是进一步解释一下,使用一个随机字符串的会话ID与会话表中的数据进行交叉引用。然后使用每个请求重新生成/加密字符串,并在 cookie 和表中更新。如果会话表与 cookie 不匹配,则无法访问数据。
    • 我还建议您将会话存储在数据库中。它们在存储更多数据(例如购物车数据等)时效果更好,并且也更安全。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-14
    • 1970-01-01
    • 2012-05-19
    • 2012-12-27
    • 2018-06-02
    • 1970-01-01
    相关资源
    最近更新 更多