【发布时间】:2017-03-27 13:21:03
【问题描述】:
我正在使用 CodeIgniter 3.0.0,我遇到了一个问题,即在生成新的会话 ID 时会话不断被破坏。这是我的会话配置。所以在这个例子中,会话总是在 300 秒后超时。
$config['sess_driver'] = 'database';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = 'ci_sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;
我已对其进行调试并将其缩小到system/libraries/Session/Session.php 的第 625 行
public function sess_regenerate($destroy = FALSE)
{
$_SESSION['__ci_last_regenerate'] = time();
session_regenerate_id($destroy); //If I uncomment this line it fixes the bug
}
我可以禁用会话重新生成,但出于安全原因,我知道这很重要。有没有其他人有这个问题?
值得我指出的是,我没有在本地遇到这个问题所以也许我的服务器设置了这个问题?
【问题讨论】:
-
您处理身份验证的方式可能有问题,您能否说明您的设置中使用了哪个授权系统或库?
-
先升级CI。 自 3.0.0 以来,有大约 20 个与会话相关的错误修复;最新版本是 3.1.2。
标签: php codeigniter session