Я написал этот HTTP-метод PUT для обновления профиля пользователя, вошедшего в систему в данный момент, поэтому в Postman я успешно вхожу в систему, использую запрос put для обновления поля, пока все хорошо, даже в базе данных поля обновляются, но затем повторная попытка запроса входа не работает. Я не думаю, что пароль каким-то образом меняется, поскольку я проверил хэш, но я не уверен.
Метод, часть моего AuthController.cs< /p>
[HttpPut("profile")]
[Authorize]
public async Task UpdateProfile([FromBody] EditDTO editDTO)
{
var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
if (userId == null) return Unauthorized();
var user = await _userManager.FindByIdAsync(userId);
if (user == null) return NotFound();
//return Ok(userDTO);
if (editDTO.Frameworks != null)
{
var frameworks = await _frameworkService.GetOrCreateFrameworksAsync(editDTO.Frameworks);
user.Frameworks = frameworks;
}
if (editDTO.Username != null)
user.UserName = editDTO.Username;
if (editDTO.Email != null)
user.Email = editDTO.Email;
var result = await _userManager.UpdateAsync(user);
if (result.Succeeded)
{
return Ok(user);
}
else
{
return BadRequest(result.Errors);
}
}
EditDTO.cs
using API.Models.Domain.Extra;
using System.ComponentModel.DataAnnotations;
namespace API.Models.DTOs.Auth
{
public class EditDTO
{
[EmailAddress]
public string? Email { get; set; }
[DataType(DataType.Text)]
public string? Username { get; set; }
public ICollection? Frameworks { get; set; }
}
}
Я пробовал разные варианты этого кода, но безрезультатно.
Пакеты:
net8.0
enable
enable
all
runtime; build; native; contentfiles; analyzers; buildtransitive
Подробнее здесь: https://stackoverflow.com/questions/790 ... ng-httpput