【问题标题】:Zend Framework 2 (ZF2) auth session refresh using storageZend Framework 2 (ZF2) auth session 使用存储刷新
【发布时间】:2014-05-20 10:00:51
【问题描述】:

我已经查看了所有内容,我可以看到人们在哪里为 ZF2 身份验证创建了初始会话,记住我的等等,但是当有活动时,我找不到人们在哪里更新会话。基本上,我已经有了一个身份验证(带有原则)系统和我当前的解决方案,并且我设置了以下配置设置:

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. 感觉就像我每次都在重新创建它 2. 有时会话似乎是随机的死。我认为这是因为原始会话在我设置的 30 分钟后终止。

有什么建议吗?

【问题讨论】:

  • 刷新是什么意思?您是否尝试在有请求时增加会话生命周期?
  • 完全正确。因此,如果我们假设此人已经登录并且我们假设会话设置为 30 分钟......我希望会话在每次请求时重置为 30 分钟。基本上只有在 30 分钟内没有请求时会话才会终止。
  • 谢谢安迪·利布里安...这基本上回答了我的问题。我找不到这个! stackoverflow.com/questions/1236374/…

标签: php session authentication zend-framework2 zend-auth


【解决方案1】:

PHP 应该会为您更新会话时间,您无需手动进行。

另外,不要在每个请求上调用rememberMe(),因为这会生成一个新的会话令牌(假设会话已经存在)。

【讨论】:

  • 那么,你是说对于每个请求,PHP 已经这样做了?好的,我需要对此进行测试。如果这么容易,我会打自己一巴掌。基本上我认为你在说的是我不需要在onRoute上做这个,只有在登录1次之后,对吧?
  • 所以我刚刚做的测试:我只在登录时设置了会话。会话在配置的时间内过期 - 不注意请求。请求没有重新开始会话时间。我将尝试再次更新每个请求,除非不执行“rememberMe”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-09
  • 1970-01-01
  • 2023-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多