存储session的cookie有效期问题

浏览:1858 发布日期:2018/09/29
5.0.0 - 普通 - 未处理
假设    'session'                => [
            'expire'         => 20,// 测试用,所以写20
        ]
    'cookie'                 => [
            'expire'         => 0,
    ]
配置的redis作为session的存储方式,如果设置session过期时间30分钟,那么即使你在30分钟内没有关闭页面,并且访问了服务器,30分钟后仍然会掉线...

解决办法:Tp5.0.20
在\thinkphp\library\think\Session.php文件第79行    ini_set('session.cookie_lifetime', $config['expire']);
    // 修改后
    ini_set('session.cookie_lifetime', 0); 

    // 灵活的配置可以读取你cookie的过期时间
    ini_set('session.cookie_lifetime', Config::get('cookie.expire'));
    //还可以更新sessid的cookie的过期时间....感觉有点复杂,我自己就改读取config中cookie的过期时间了。
发现config中设置session过期时间后,cookie用的也是session的过期时间,实际上在config中cookie的过期时间是0,这就导致在刷新的时候redis更新了session的生命周期但是浏览器的cookie到期被释放了。

请官方看看这算不算一个Bug
评论(
后面还有条评论,点击查看>>