用户名更改后的symfony身份验证问题

最后发布: 2013-08-09 14:08:51


问题

我有问题。 我有一个用symfony 2建立的网站,现在通过身份验证表单后,有了一个配置文件信息窗口,可以更改用户数据,例如。 用户名。

问题是,更改用户名后,该网站使我再次登录。 如何避免需要再次登录。

php symfony
回答

用户名通过symfony存储在会话中,以在认证后在每个页面视图上加载用户数据(用户实体)。 您被要求重新登录,因为用于身份验证的用户名不再能够加载用户数据。 您可以尝试更新存储在会话中的用户名(令牌):

$oldToken = $this->container->get('security.context')->getToken();

// create the authentication token
$token = new UsernamePasswordToken(
    $user, //user object with updated username
    null,
    $oldToken->getProviderKey(),
    $oldToken->getRoles());
// update the token in the security context
$this->container->get('security.context')->setToken($token);