使用用户管理器和FOSUserBundle更新用户名或密码后,用户会话完成

时间:2018-11-26 09:00:54

标签: angular symfony session fosuserbundle usermanager

我正在使用Angular 7的前端和Symfony 4的后端开发API / REST Web应用程序。 原来,我正在尝试使用FosUserBundle和用户管理器更新用户的用户名或密码。问题在于,更新后我必须在前端再次登录,因为会话已关闭。 我在Angular端使用JWT身份验证,我认为问题与它使用用户名和密码创建的安全令牌有关。 有什么线索吗?

公共函数updateAccess(用户$ user,字符串$ username,字符串$ email,字符串$ plainPassword){

    if($username && is_null($email)){
        $user->setUsername($username);
        $validationGroups = ['Default','username'];
        $errors = $this->validator->validate($user, null, $validationGroups);
        if (count($errors) > 0) {
            throw new UnprocessableEntityHttpException('validation_error');
        }
        $user->setEmail($username);
    }

    if(is_null($username) && $email){
        $user->setEmail($email);
        $validationGroups = ['Default','email'];
        $errors = $this->validator->validate($user, null, $validationGroups);
        if (count($errors) > 0) {
            throw new UnprocessableEntityHttpException('validation_error');
        }
        $user->setUsername($email);
    }

    if($username && $email){
        $user->setEmail($email);
        $validationGroups = ['Default','username','email'];
        $errors = $this->validator->validate($user, null, $validationGroups);
        if (count($errors) > 0) {
            throw new UnprocessableEntityHttpException('validation_error');
        }
        $user->setUsername($username);
    }

    if ($plainPassword){
        $validationGroups = ['Default','edit'];
        $user->setPlainPassword($plainPassword);
        $errors = $this->validator->validate($user, null, $validationGroups);
        if (count($errors) > 0) {
            throw new UnprocessableEntityHttpException('validation_error');
        }
    }
    $this->userManager->updateUser($user);
}

0 个答案:

没有答案