gpt4 book ai didi

php - ZF2 SessionManager 用法

转载 作者:可可西里 更新时间:2023-11-01 13:08:38 25 4
gpt4 key购买 nike

我是 ZF2 的新手,不太习惯如何做事。我想使用 session 来跟踪用户(记住我)。我在类的一部分中有这段代码:

$sessionManager = new \Zend\Session\SessionManager();
$sessionManager->rememberMe($time);

// i want to keep track of my user id too
$populateStorage = array('user_id' => $user->getId());
$storage = new ArrayStorage($populateStorage);
$sessionManager->setStorage($storage);

好的,到目前为止一切顺利。当我尝试时:

var_dump($sessionManager->getStorage());

我得到了预期的数据。

在我程序的另一部分,我想再次检索我的数据(有点像容器):

$sessionManager = new \Zend\Session\SessionManager();
var_dump($sessionManager->getStorage());

这只会返回一个空对象。我想这是由于"new",我想我必须以不同的方式实现 SessionManager,但是如何呢?我不知道。这是我想出的:

在我的模块中,我现在有:

public function onBootstrap(\Zend\Mvc\MvcEvent $e)
{
$config = $e->getApplication()
->getServiceManager()
->get('Configuration');

$sessionConfig = new SessionConfig();
$sessionConfig->setOptions($config['session']);
$sessionManager = new SessionManager($sessionConfig);
$sessionManager->start();

在我的 module.config 中:

'session' => array(
'remember_me_seconds' => 2419200,
'use_cookies' => true,
'cookie_httponly' => true,
),

但是如何进行呢?我如何获取我的 sessionManager 的实例?

最佳答案

SessionManagerFactory ( zf2 api doc ) 和 SessionConfigFactory ( zf2 api doc ) 没有很好的文档记录。使用这些实例化 SessionManager 非常容易,只需将这些工厂放入您的 ServiceManager 配置中即可:

'service_manager' => [
'factories' => [
'Zend\Session\SessionManager' => 'Zend\Session\Service\SessionManagerFactory',
'Zend\Session\Config\ConfigInterface' => 'Zend\Session\Service\SessionConfigFactory',
],
],

模块配置将 session 选项放在 session_config 键下:

'session_config' => [
'remember_me_seconds' => 2419200,
'use_cookies' => true,
'cookie_httponly' => true,
],

就是这样,现在您可以从任何地方的服务定位器中获取 SessionManager,例如在 Controller 中:

/** @var Zend\Session\SessionManager $sm */
$sessionManager = $this->serviceLocator->get('Zend\Session\SessionManager');

从 Zend Framework 的 2.2 版本开始可用 (related pull request)。

关于php - ZF2 SessionManager 用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20639289/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com