a_nice_day 2018-11-28 21:14:51 359次浏览 2条评论 1 0 0

Yii 升级到 2.0.15 后,本地使用谷歌浏览器测试发现刷新一次或几次是出现 session 失效的问题,在本地用其他浏览器则都正常。

seesion 失效时,通过 RedisDesktopManager 工具发现 Redis 数据库里的 session 值被清空了!!这是升级后才出现这种问题,查了很多资料也没找到原因,最后我单独将以前 /vendor/yiisoft/yii2-redis 目录复制出来,粘贴到本地环境的 verndor/yiisoft 目录下,并修改 /vendor/yiisoft/extensions.php 中Redis 配置的加载目录,就没再出现这种问题,很奇怪的现象。

亿速云
  • 评论于 2018-11-28 21:18

    我是将升级前旧版本的项目解压后,直接将 /vendor/yiisoft/yii2-redis 复制到本地环境的 /vendor/yiisoft 目录下,在谷歌浏览中测试后就没出现 session 失效的问题了。

  • 评论于 2018-12-02 18:40

    终于解决了,我的session涉及到了跨域访问(a.test.com, b.test.com, c.test.com 之间session共享),而我是将session id存储到本地cookie,再让各个域名读取cookie获取session_id,通过 Yii::$app->session->setId('session id值')来达到跨域共享session的目的,这种方法在谷歌浏览下会出现那个问题。
    我直接删掉 Yii::$app->session->setId('session id值') 这种代码,或者直接在web/index.php 头部加如下一行代码:
    ini_set('session.cookie_domain', '.test.com');
    或者再yii配置文件中做如下设置也是一样的道理:
    'session' => [

    		'class' => 'yii\redis\Session', 
    		'cookieParams' => [
    			'domain' => '.test.com', 
    		], 
    	], 
    

    到此,问题解决

    觉得很赞
您需要登录后才可以评论。登录 | 立即注册