ZF2 SessionManager用法

 范尼萧_659 发布于 2023-02-09 19:04

我是ZF2的新手,并不习惯如何做事.我想使用会话来跟踪用户(记住我).我在我班级的一部分有这个代码:

$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());

这只返回一个空对象.我想这是由于"新",我认为我必须以不同的方式实现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的实例?

1 个回答
  • 没有详细记录的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_config键下放置会话选项:

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

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

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

    这是从2.2版本的Zend Framework(相关拉取请求)开始提供的.

    2023-02-09 19:07 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有