2016-10-24 3 views
0

cop1 앱 (프로젝트)에서 로그 아웃 할 때 $this->session->destroy을 사용하면 두 개의 앱 세션이 모두 삭제됩니다 (두 개의 앱이 로그 아웃 됨). 그러나 내가 remove을 사용하면 잘 작동합니다. $this->session->remove("user"). 따라서 해당 상대 세션 사용자 만 파괴되므로 cop1 만 로그 아웃됩니다. 내 현재 상태 (cop1)의 모든 세션을 삭제하는 중 세션 변수뿐만 아니라 user? 어떻게 처리 할 수 ​​있습니까?현재 고유 세션 ID를 phalcon으로 삭제 하시겠습니까?

로컬 호스트/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을 사용하려고 있나요?

이 구성 요소는 세션 데이터를 "네임 스페이스"로 분리하는 데 도움이됩니다. 이 방법으로 작업하면 세션 변수 그룹을 응용 프로그램에 쉽게 만들 수 있습니다. "bag"변수 만 설정하면 자동으로 세션에 저장됩니다.

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

을 그리고 당신은 로그 아웃 할 때 당신이 할 : 사람 앱에 로그인 할 때마다

당신은 세션 가방을 만들어가 session bag으로 시도 할 수

$sessionBag->destroy(); 
-1

내 때문에 현재 프로젝트에는 많은 모듈과 세션이 있으므로 코드를 교체 할 시간이 없습니다. 이제 내 문제는 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; 
});