【发布时间】:2015-04-09 22:57:32
【问题描述】:
我的 ZF2 应用程序在短暂不活动后(例如 60 分钟左右)退出,我不明白为什么。
我有一个“auth”对象,它是一个构成Zend\Session\Container 实例的单例。它的构造函数使用以下行创建容器:
$this->session = new Container('Auth');
auth 对象有一个login() 方法,它使用以下行存储当前用户:
$this->getSession()->userId = $user->id;
auth 对象还有一个isLoggedIn() 方法,用于测试如下状态:
if ($this->getSession()->userId) {
return true;
}
return false;
这一切都很简单。然而,有时当引导程序检查我们是否已登录时,它会返回 false。为什么?
这是来自会话管理器的配置打印输出:
'cookie_domain' => '',
'cookie_httponly' => false,
'cookie_lifetime' => 604800,
'cookie_path' => '/',
'cookie_secure' => '',
'name' => 'MyApplication',
'remember_me_seconds' => 1209600,
'save_path' => '/var/lib/php5',
'use_cookies' => true,
如您所见,remember_me_seconds 和 cookie_lifetime 分别设置为 2 周和 7 天。还有其他一些我应该查看的设置吗?
我在某处读到默认保存处理程序“文件”不支持并发。我的引导程序还使用new Container('Auth') 打开一个session container 到auth 命名空间。这可能与身份验证单例中的 Container 冲突吗?我对此表示怀疑,因为问题很可能发生在活动频繁的时期(而不是在一段时间不活动之后)。另外,我希望看到一个例外。
我有祸了。
编辑:还值得注意的是,会话 ID 在注销或重新登录时不会更改。
【问题讨论】:
标签: php zend-framework2 session-timeout zend-session