Zend framework2 如何更改sessionid值Zend Framework 2
我想更改PHPSESSID名称和值。我可以命名,但无法更改值。 我有以下结构。如何更改sessionid值 我的module.config.php是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' =>
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是要设置的值