我有一种使用自定义数据设置安全上下文的方法:
$userEntity = new User();
$userEntity->fromArray($user);
$token = new UsernamePasswordToken($userEntity, $userEntity->getPassword(), 'secured_area', $userEntity->getRoles());
$session = $this->container->get('session');
$session->set('_security_secured_area', serialize($token));
$this->container->get('security.authentication.manager')->authenticate($token);
$this->container->get('security.context')->setToken($token);
我使用 curl 从另一个应用程序获取用户数据,并希望将其存储为本地“登录用户”。它可以工作,但是在 security.context 中的页面重新加载/重定向之后,我从本地数据库中为具有相同 ID 的用户获取新数据。
我想它可能看起来很复杂,所以问题是:
为什么当我运行$this->get('security.context')->getToken()->getUser()
Symfony 时从数据库中获取用户,而不是从会话中获取用户?