我到处都看了,我可以看到人们在哪里为ZF2-auth创建了初始会话,记住我的,等等,但当有活动时,我找不到人们在哪里更新会话。基本上,我已经有了一个身份验证(带条令)系统和我目前的解决方案,我设置了以下配置设置:
return array (
'session' => array(
'cookie_lifetime' => 1800, // 30 min
'remember_me_seconds' => 1800, // 30 min
'use_cookies' => true,
),
);
然后我要做的是在每个请求上重新加载,如下所示:注意:我有代码,只有当用户已经登录时才会这样做。
class Module
{
public function onBootstrap(EventInterface $e)
{
$this->getEventManager()->attach('route', array($this, 'onRoute'), -100);
}
public function onRoute(EventInterface $e)
{
$sessionConfig = new SessionConfig();
$sessionConfig->setOptions($config['session']);
$sessionManager = new SessionManager($sessionConfig);
$sessionManager->rememberMe($config['session']['remember_me_seconds']);
$sessionManager->start();
}
}
我的基本需求是,每当有请求时,我都会尝试刷新会话(服务器和客户端),但只有1。感觉我每次都在重新创造它。有时会话似乎随机终止。我认为这是因为原始会话在我设置为30分钟后死亡。
有什么建议吗?
PHP应该为您更新会话时间,您不需要手动更新。
此外,不要对每个请求都调用rememberMe()
,因为这将生成一个新的会话令牌(假设会话已经存在)。