簡體   English   中英

通過Phalcon刪除當前唯一的會話ID?

[英]Deleting current unique session id by phalcon?

當我從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;
});

除了正常的Session以外,您是否還嘗試過使用Session Bags

該組件有助於將會話數據分成“命名空間”。 通過這種方式,您可以輕松地在應用程序中創建會話變量組。 通過僅在“ bag”中設置變量,它會自動存儲在會話中。

每當有人登錄到您的應用程序時,您都會創建一個會話包:

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

當您要注銷時,請執行以下操作:

$sessionBag->destroy();

我無法嘗試使用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;
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM