如何使用symfony 4使与控制器的会话无效



我的应用程序正在从symfony 3迁移到symfony 4, 我不知道这是否是symfony 4的错误。

我使用一个 rest api,该 api 使用创建和删除会话的控制器。

当我创建会话并设置变量时。

$session = new Session(); // or $this->get("session") 
$session->start();
$session->set("key", "value");

并尝试使 sesssion 无效。 (我尝试了所有这些(

$session = new Session();
$session->invalidate(1);
$session->clear();
$this->get("session")->invalidate(1);
$request->getSession()->invalidate(1);

仍然可以使用 get 方法访问该值。 例如

$request->getSession()->get("key");

此外,将令牌设置为 null 且不再可用的服务。

首先获取当前存在的会话

$session = $this->get('session');

要设置变量:

$session->set('key', 'value');

要清除所有变量:

$session->clear();

使会话无效

$session->invalidate();

当我做

var_dump($request->getSession()->get("key"));

它返回空

我想问题是你设置了两次$session

$session = new Session();
$session->set('key', 'value');
$session = new Session();
$session->invalidate(1);
var_dump($request->getSession()->get("key"));

这将返回字符串"值",而

$session = new Session();
$session->set('key', 'value');
$session->invalidate(1);
var_dump($request->getSession()->get("key"));

返回空

最新更新