我正在使用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);
}