当我从cop1
应用程序(项目)注销时,如果我使用$this->session->destroy
:它会销毁所有两个应用程序会话(两个应用程序都会注销),但如果我使用remove
功能它运作良好,例如。 $this->session->remove("user")
。因为它的唯一被破坏的相对会话用户因此只有cop1
注销。我需要的是删除所有当前(cop1)会话而不仅仅是会话变量user
?我怎么处理这个?
本地主机/ COP1 /..
$di->set('session', function () {
$session = new SessionAdapter();
$session->setOptions(['uniqueId'=> "cop1_"]);
$session->start();
return $session;
});
本地主机/ COP2 /..
$di->set('session', function () {
$session = new SessionAdapter();
$session->setOptions(['uniqueId'=> "cop2_"]);
$session->start();
return $session;
});
答案 0 :(得分:2)
除正常会话外,您是否尝试使用Session Bags?
此组件有助于将会话数据分成“命名空间”。通过这种方式工作,您可以轻松地在应用程序中创建会话变量组。只需在“包”中设置变量,它就会自动存储在会话中。
每当有人登录您的应用时,您都会创建一个会话包:
$sessionBag = new \Phalcon\Session\Bag('user');
$sessionBag->set('key', 'value');
当您要退出时,请执行以下操作:
$sessionBag->destroy();
答案 1 :(得分:-1)
我无法使用session bag
,因为我当前的项目有很多模块和会话,因此我没有时间替换代码。现在我的问题已由session_name
解决,但我不知道这是一个好问题吗?希望对像我这样的人有所帮助......
session_name允许您为每个应用程序[同一个域]提供不同的会话。
<强>本地主机/ COP1 /..强>
$di->set('session', function () {
$session = new SessionAdapter();
$session->setOptions(['uniqueId'=> "cop1_"]);
session_name("cop1");
$session->start();
return $session;
});
<强>本地主机/ COP2 /..强>
$di->set('session', function () {
$session = new SessionAdapter();
$session->setOptions(['uniqueId'=> "cop2_"]);
session_name("cop2");
$session->start();
return $session;
});