Zend framework2 如何更改sessionid值Zend Framework 2

Zend framework2 如何更改sessionid值Zend Framework 2,zend-framework2,Zend Framework2,我想更改PHPSESSID名称和值。我可以命名,但无法更改值。 我有以下结构。如何更改sessionid值 我的module.config.php是 return array( 'session' => array( 'config' => array( 'class' => 'Zend\Session\Config\SessionConfig', 'options' =>

我想更改PHPSESSID名称和值。我可以命名,但无法更改值。 我有以下结构。如何更改sessionid值

我的module.config.php是

return array(
    'session'         => array(
        'config'     => array(
            'class'   => 'Zend\Session\Config\SessionConfig',
            'options' => array(
                'name' => 'portal1'
            ),
        ),
        'storage'    => 'Zend\Session\Storage\SessionArrayStorage',
        'validators' => array(
            array(
                'Zend\Session\Validator\RemoteAddr',
                'Zend\Session\Validator\HttpUserAgent',
            ),
        ),
    ),
);
mymodule.php

public function onBootstrap($e) {
    $this->bootstrapSession($e);
}

public function bootstrapSession($e) {
    $session = $e->getApplication()
            ->getServiceManager()
            ->get('Zend\Session\SessionManager');
    $session->start();

    $container = new Container('initialized');
    if (!isset($container->init)) {
        $session->regenerateId(true);
        $container->init = 1;
    }
}

public function getServiceConfig() {
    return array(
        'factories'  => array(
            'Zend\Session\SessionManager'           => function ($sm) {
                $config = $sm->get('config');
                if (isset($config['session'])) {
                    $session = $config['session'];

                    $sessionConfig = null;
                    if (isset($session['config'])) {
                        $class         = isset($session['config']['class']) ? $session['config']['class']
                            : 'Zend\Session\Config\SessionConfig';
                        $options       =
                            isset($session['config']['options']) ? $session['config']['options'] : array();
                        $sessionConfig = new $class();
                        $sessionConfig->setOptions($options);
                    }

                    $sessionStorage = null;
                    if (isset($session['storage'])) {
                        $class          = $session['storage'];
                        $sessionStorage = new $class();
                    }

                    $sessionSaveHandler = null;
                    if (isset($session['save_handler'])) {
                        $sessionSaveHandler = $sm->get($session['save_handler']);
                    }

                    $sessionManager = new SessionManager($sessionConfig, $sessionStorage, $sessionSaveHandler);

                    if (isset($session['validator'])) {
                        $chain = $sessionManager->getValidatorChain();
                        foreach ($session['validator'] as $validator) {
                            $validator = new $validator();
                            $chain->attach('session.validate', array($validator, 'isValid'));

                        }
                    }
                } else {
                    $sessionManager = new SessionManager();
                }
                Container::setDefaultManager($sessionManager);

                return $sessionManager;
            },
        ),
    );
}
MyController.php是;我想在这里更改PHPSESSID键和值

public function loginAction() {
    $container = new Container();    /*
    i want to change PHPSESSID key and value
    eg: portal1: fafsafg43kgfdsgfds //my sessionid value
    */
}

嗯,在回答问题之前,我想澄清一下- “我想更改PHPSESSID键和值”是什么意思 据我所知,您想更改“PHPSESSID”文本。这意味着你想用不同的名字来称呼它,比如“MySessionId”,不是吗

事实上,我无权在我可以问的地方写评论

无论如何,如果您想用不同的名称来调用它,那么ZF不是服务器PHP会话设置的问题。因此,请参阅服务器的会话部分。您可以从或获得帮助 ZF还允许您通过Zend\Session\Config\SessionConfig类或Zend\Session\SessionManager类更改该名称。您必须通过调用setName方法来设置首选名称

现在,如果您想更改会话id的值(它自动生成并保存到PHPSESSID中),您可以在ZF中进行更改。下面是ZF2的代码,用于显式设置该值

$container->getManager()->setId($id); # For current session manager of your container
$container->getDefaultManager()->setId($id); # For default session manager of your entire app
在上面的代码中,$id是要设置的值