数据库
首页 > 数据库> > php – Symfony 2.3:如何从数据库中刷新经过身份验证的用户?

php – Symfony 2.3:如何从数据库中刷新经过身份验证的用户?

作者:互联网

例如,我向控制器中当前经过身份验证的用户授予新角色,如下所示:

$em = $this->getDoctrine()->getManager();
$loggedInUser = $this->get('security.context')->getToken()->getUser();
$loggedInUser->addRole('ROLE_XYZ');

$em->persist($loggedInUser);
$em->flush();

在下一页加载时,当我再次获取经过身份验证的用户时:

$loggedInUser = $this->get('security.context')->getToken()->getUser();

他们没有被授予这个角色.我猜这是因为用户存储在会话中需要刷新.

我该怎么做呢?

如果有所作为,我正在使用FOSUserBundle.

解决方法:

尝试这个:

$em = $this->getDoctrine()->getManager();
$loggedInUser = $this->get('security.context')->getToken()->getUser();
$loggedInUser->addRole('ROLE_XYZ');

$em->persist($loggedInUser);
$em->flush();

$token = new \Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken(
  $loggedInUser,
  null,
  'main',
  $loggedInUser->getRoles()
);

$this->container->get('security.context')->setToken($token);

标签:php,symfony,fosuserbundle
来源: https://codeday.me/bug/20190927/1823267.html