Yii 升级到 2.0.15 后,本地使用谷歌浏览器 session 失效的问题 [ 2.0 版本 ]
Yii 升级到 2.0.15 后,本地使用谷歌浏览器测试发现刷新一次或几次是出现 session 失效的问题,在本地用其他浏览器则都正常。
当 seesion
失效时,通过 RedisDesktopManager
工具发现 Redis 数据库里的 session 值被清空了!!这是升级后才出现这种问题,查了很多资料也没找到原因,最后我单独将以前 /vendor/yiisoft/yii2-redis
目录复制出来,粘贴到本地环境的 verndor/yiisoft
目录下,并修改 /vendor/yiisoft/extensions.php
中Redis 配置的加载目录,就没再出现这种问题,很奇怪的现象。
a_nice_day
注册时间:2018-11-16
最后登录:2024-05-26
在线时长:2小时11分
最后登录:2024-05-26
在线时长:2小时11分
- 粉丝0
- 金钱5
- 威望10
- 积分125
共 2 条评论
我是将升级前旧版本的项目解压后,直接将
/vendor/yiisoft/yii2-redis
复制到本地环境的/vendor/yiisoft
目录下,在谷歌浏览中测试后就没出现 session 失效的问题了。终于解决了,我的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', ], ],
到此,问题解决