我讀了關於destroy a particular session using its ID in pure PHP的一種方法,我想用Symfony服務和組件做同樣的事情。 這必須在控制器之外完成(例如控制檯命令)。摧毀一個特定的會話
但是,我找不到處理session_commit
方法的任何服務/組件。
我應該使用它還是有我錯過的任何服務/組件?
我讀了關於destroy a particular session using its ID in pure PHP的一種方法,我想用Symfony服務和組件做同樣的事情。 這必須在控制器之外完成(例如控制檯命令)。摧毀一個特定的會話
但是,我找不到處理session_commit
方法的任何服務/組件。
我應該使用它還是有我錯過的任何服務/組件?
下面的方式使用其ID來終止會話(對不起,我沒有時間來測試代碼,但它應該工作正常)。
use Symfony\Component\HttpFoundation\Session\Session;
$session_id_to_kill = 'xxxxxxxx';
$session = new Session();
$session->setId($session_id_to_kill);
$session->start();
$session->invalidate();
如果你有一個活動會話(執行通過控制器動作這個動作),你必須之前停止它,你殺對方一個後恢復。
$request->getSession()->stop(); // Stop the current session
// Kill the session using the same code as above
// Restart you session
$request->getSession()->start();
謝謝。你的代碼看起來不錯。我將在下週嘗試使用它。 –
要回答你的問題:http://symfony.com/doc/current/components/http_foundation/sessions.html#session-data-management
從你的控制器內,你將有你的請求對象。通用,你可以使用
$request->getSession()->clear();
或
$request->getSession()->remove("sessionKey");
更多的信息,你可以閱讀http://symfony.com/doc/current/components/http_foundation/sessions.html
example: getStorageKey()
返回該袋將最終存儲在其下陣的關鍵$ _SESSION。一般來說,這個值可以保留在默認值並用於內部使用。
其所有的文檔上面提到的
這不是我所需要的。您的代碼從當前會話中刪除特定密鑰。我需要刪除**特定的會話**(即不是當前的會話)。 –
我剛剛編輯了答案 – Ajir
'$ request-> getSession()'===當前會話。這不是我正在尋找的。 –
由於session_destroy沒有標識ID,它會銷燬當前會話,肯定會破壞Symfony建立的會話。如果您要銷燬會話,則Session_commit不是必需的。 – Devon