2016-10-24 35 views
0

当我从cop1应用程序(项目)注销,如果我用$this->session->destroy:它摧毁了所有两个表观会议(两个应用程序都注销),但如果我用remove功能它的工作以及如。 $this->session->remove("user")。因为它唯一被销毁的相对会话用户因此只有cop1是注销。我需要的是删除所有当前(cop1)会话不仅会话变量user?我该如何处理?通过phalcon删除当前唯一会话ID?

本地主机/ 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; 
}); 

回答

2

您是否尝试过使用Session Bags,除了正常的会议?

该组件有助于将会话数据分隔为“名称空间”。通过这种方式工作,您可以轻松地将会话变量组创建到应用程序中。通过只设置“包”中的变量,它会自动存储在会话中。

每当有人登录到你的应用程序创建一个会话袋:

$sessionBag = new \Phalcon\Session\Bag('user'); 
$sessionBag->set('key', 'value'); 

而当你想退出你做:

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