【发布时间】:2012-10-03 06:50:06
【问题描述】:
我在下面包含了我们 Yii 配置文件的相关部分:
return array(
...
'components'=>array(
'session' => array(
'timeout' => 86400,
),
'user'=>array(
'allowAutoLogin' => true,
'autoRenewCookie' => true,
'authTimeout' => 31557600,
),
...
),
...
);
我也进入了 php.ini 并设置了session.gc_maxlifetime = 86400,但这仍然没有解决问题。
目前,我完全不知道还有什么可能导致它在大约 15-30 分钟不活动后超时并注销用户。理想情况下,用户应保持登录状态至少一天不活动(在关闭浏览器窗口后,允许浏览器首选项)。
我搜索了谷歌、Yii 和堆栈溢出,但找不到任何我忽略的东西……但显然我忽略了一些东西。如果有人能帮助我,我将不胜感激。
请求了我们用来登录用户的典型代码示例,包含在下面:
$identity = new UserIdentity('facebook', $id, $user->name, $user->email);
$loggedIn = Yii::app()->user->login($identity);
$this->subscriptionChecker->updateCurrentUserSubscribed();
这是任何时候调用Yii::app()->user->login() 的典型情况
在 Chrome 中,这是我拥有的网站 cookie 及其到期时间(在清除所有 cookie 并登录后):
PHPSESSID expires When the browsing session ends
// I'm informed these are set by google analytics
__utma created Friday, 12 October 2012 14:05:31 expires Sunday, 12 October 2014 14:05:31
__utmb created Friday 12 October 2012 14:05:31 expires Friday 12 October 2012 14:35:31,
__utmc created Friday, 12 October 2012 14:05:31 expires When the browsing session ends
__utmz created Friday 12 October 2012 14:05:31 expires Saturday 13 April 2013 02:05:31
// end google analytics
【问题讨论】:
-
检查是否使用 Yii::app()->user->login 方法设置会话时间?
-
我认为你如何登录你的用户在这里很重要,你能展示一下这段代码吗?
-
还尝试在数据库中维护会话(仅用于测试)并查看“过期”时间是多少?
-
检查发送到浏览器的会话cookie,确保它不会提前过期。
-
还检查执行 $loggedIn = Yii::app()->user->login($identity, 86400); 时会发生什么;
标签: php session cookies yii session-timeout