問題描述
我在下面包含了 Yii 配置文件的相關部分:
I've included the relevent parts of our Yii config file below:
return array(
...
'components'=>array(
'session' => array(
'timeout' => 86400,
),
'user'=>array(
'allowAutoLogin' => true,
'autoRenewCookie' => true,
'authTimeout' => 31557600,
),
...
),
...
);
我也進入了 php.ini 并設置了 session.gc_maxlifetime = 86400
但這仍然沒有解決問題.
I have also been into php.ini and set session.gc_maxlifetime = 86400
but this still hasn't fixed the problem.
目前,我完全不知道還有什么可能導致它超時并在大約 15-30 分鐘不活動后將用戶注銷.理想情況下,用戶應該保持登錄狀態至少一天不活動(并且除了關閉瀏覽器窗口,瀏覽器首選項允許).
Currently, Im absolutely at a loss as to what else could be causing it to timeout and log the user out after roughly 15-30 minutes of inactivity. Ideally users should remain logged in for at least a day of inactivity (and beyond closing the browser window, browser preferences allowing).
我已經搜索了 google、Yii 和堆棧溢出,但找不到任何我忽略的東西……但顯然我忽略了一些東西.如果有人可以幫助我,我將不勝感激.
I've trawled google, Yii and stack overflow and just can't find anything that I'm overlooking... but clearly I am overlooking something. If anyone can help me out I'd be very grateful.
我們用來登錄用戶的典型代碼示例被請求,包含在下面:
A sample of typical code that we are using to log in the users was requested and is included below:
$identity = new UserIdentity('facebook', $id, $user->name, $user->email);
$loggedIn = Yii::app()->user->login($identity);
$this->subscriptionChecker->updateCurrentUserSubscribed();
這是很典型的任何時候 Yii::app()->user->login()
被調用
This is pretty typical of any time that Yii::app()->user->login()
is called
在 Chrome 中,以下是我為該網站準備的 cookie 及其到期時間(在清除所有 cookie 并登錄后):
From Chrome, here are the cookies I have for the site and their expiries (after clearing all cookies and just logging in):
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
推薦答案
http://www.yiiframework.com/doc/api/1.1/CWebUser#login-detail
感謝 Arfeen 的幫助,他為我指明了正確的方向,除非您設置了 Yii::app()->user->login()
的第二個參數,否則結果是Yii 不會使用持久性 cookie,因為第二個參數默認為 0.這個默認的 0 值會覆蓋您可能設置的任何其他超時值.
Thanks to help from Arfeen who pointed me in the right direction, unless you set the second parameter of Yii::app()->user->login()
it turns out that Yii will not use a persistent cookie, as the second parameter defaults to 0. This default 0-value overrides anything else you might have set to do with timeouts.
這篇關于盡管會話超時設置為至少 1 天,但 Yii 用戶仍會在 15-30 分鐘后注銷的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!