我基本上正在尝试注册一个新用户。但 ModelState.IsValid 返回 false。我无法解决这个问题。我在这个项目中使用 Identity。
这是我的 UserRegisterController:
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;
using MobimentiBackend.Core.Concrete;
using MobimentiBackend.Dto.UserDtos;
namespace MobimentiBackend.API.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class UserRegisterController : ControllerBase
{
private readonly UserManager<User> _userManager;
public UserRegisterController(UserManager<User> userManager)
{
_userManager = userManager;
}
[HttpPost("register")]
public async Task<IActionResult> Register([FromBody]UserRegisterDto userRegisterDto)
{
if (ModelState.IsValid)
{
var user = new User()
{
Name = userRegisterDto.Name,
Surname = userRegisterDto.Surname,
Email = userRegisterDto.Email,
};
var result = await _userManager.CreateAsync(user, userRegisterDto.Password);
if (result.Succeeded)
{
return Ok(user);
}
}
if (userRegisterDto.Password != userRegisterDto.ConfirmPassword)
{
ModelState.AddModelError("ConfirmPassword", "Passwords are not matching.");
return BadRequest(new { Message = "Failed registration", Errors = ModelState.Values.SelectMany(v => v.Errors) });
}
return BadRequest();
}
}
}
直接retun-rn BadRequest。我有用户模型。它继承了IdentiyUser。 这是代码:
using Microsoft.AspNetCore.Identity;
namespace MobimentiBackend.Core.Concrete
{
public class User : IdentityUser
{
public string Name { get; set; }
public string Surname { get; set; }
}
}
我有 Dto,名称为 UserRegisterDto 这是代码:
namespace MobimentiBackend.Dto.UserDtos
{
public class UserRegisterDto
{
public string Name { get; set; }
public string Surname { get; set; }
public string Email { get; set; }
public string Password { get; set; }
public string ConfirmPassword { get; set; }
}
}
这是我的要求:
{
"name": "test",
"surname": "user",
"email": "[email protected]",
"password": "2~yEj7)w$Q",
"confirmPassword": "2~yEj7)w$Q"
}
最后我添加了 Swagger 截图结果。你可以看看我的错误:
ModelState.IsValid 返回 false 但不是预期的
代码对我来说似乎很好,我希望问题在这里,'if (result.Succeeded){return Ok(user);}
what will happen if
CreateAsyncfails. Your method will
return BadRequest();`