我来自安全背景,我是一名信息安全顾问,并测试了 web 应用程序的漏洞。我刚开始从事 webdev 工作,我正忙于我的第一个项目,用 Codeigniter 编写。
我正在尝试解决多个并发登录的问题,其中用户可以有两个(或更多)同时有效且活动的并发会话。我知道如何做到这一点,但我对 CI 没有经验,所以我想知道是否有更好或更“官方”的方式。它还涉及对数据库的 ci_sessions 表进行更改,不确定 CI 将如何处理它。
目前我正在使用数据库进行会话数据,我的计划是在 ci_sessions 表中添加一个额外的 coloum,该表存储用户的电子邮件地址(身份验证后)。换句话说,在用户成功登录之前它将为 NULL,此时用户的电子邮件地址将被存储在其中。
计划是确认登录期间提供的凭据的有效性,如果它们正确,则在会话表中搜索与同一电子邮件地址对应的其他会话并删除它们。删除用户的其他会话后,将设置指示有效已验证会话的电子邮件和会话数据。
这是最好的方法吗?
编辑:当然,当 CI 为当前会话创建新会话 id 而不是更新时,这将不起作用,因为 CI 不会将电子邮件地址设置为新会话。我必须对源代码进行修改...