【问题标题】:设置会话变量但不能从另一个控制器访问它
【发布时间】:2022-01-21 08:35:53
【问题描述】:

我在登录时尝试设置会话变量,这似乎有效,但我无法在另一个控制器的另一个函数中获取此变量。

(SecurityController.php)

public function login(RequestStack $requestStack): Response
{
    //$session = $requestStack->getSession();
    $session = $requestStack->getCurrentRequest()->getSession();
    $session->set('uuid_user', $user->getUuid());

    $this->logger->info($session->get('uuid_user')); //I can access this and it works here
}


(CityController.php)

public function getCity(RequestStack $requestStack): Response
{
    //$session = $requestStack->getSession();
    $session = $requestStack->getCurrentRequest()->getSession();
    $uuidUser = $session->get('uuid_user');
    
    $this->logger->info($uuidUser); //I can't access that here, it just returns null
}

你知道我做错了什么吗?

【问题讨论】:

  • 文档真的那么混乱吗?这是第二个recent question,发帖人认为他们需要在控制器内部使用 RequestStack。只需像往常一样注入请求并从中提取会话。提供的链接包含一个您可以尝试的简单测试用例。如果我不得不猜测问题可能更多的是安全配置而不是会话。

标签: symfony session


【解决方案1】:

当用户登录时,会话发生变化(查看您的 PHPSESSID cookie)。您可能在旧会话而不是新会话上设置了 uuid_user。

在您的身份验证器(文件夹 src/Security)中设置 onAuthenticationSuccess 上的 uuid_user 应该可以工作

【讨论】:

    猜你喜欢
    • 2011-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-13
    • 2017-03-23
    • 1970-01-01
    • 2018-07-01
    相关资源
    最近更新 更多