通过邮递员测试时,我的注册 API 不起作用:“状态代码:400;错误请求”

问题描述 投票:0回答:1

测试时,我尝试匹配来自我的

RegisterViewModel
的输入,无论我在邮递员中尝试使用什么不同的输入来发布用户,它都不起作用,不确定这是否与该方法或我的输入有关邮递员

RegisterViewModel
看起来像这样:

public class RegisterViewModel
{
        [Required]
        public string Username { get; set; }
        [Required, DataType(DataType.Password)]
        public string Password { get; set; }
        [Required, DataType(DataType.Password)]
        public string ReEnterPassword { get; set; }
        public string Email { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
}

这是我尝试输入到postman

{
 "username" : "user01",
 "password" : "test123",
 "reEnterPassword" : "test123",
 "email" : "[email protected]",
 "firstName" : "Joe",
 "lastName" : "Bloggs"
}

使用的方法:

[HttpPost("api/auth/register")]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<IActionResult> NotWrkingRegister([FromBody] RegisterViewModel user)
{

        if (user.Password != user.ReEnterPassword)
        {
            ModelState.AddModelError(string.Empty, "Password don't match");
            return BadRequest();
        }

        try
        {

            var newUser = Mapper.Map<RegisterViewModel, AppUser>(user);

            newUser.UserName = user.Username;

            newUser.APIKey = Guid.NewGuid();
            //newUser.Email = user.Email;

            var userCreationResult = await userManager.CreateAsync(newUser, user.Password);
            if (!userCreationResult.Succeeded)
            {
                foreach (var error in userCreationResult.Errors)
                    ModelState.AddModelError(string.Empty, error.Description);
                return View(user);
            }
            else
            {

                string confirmationToken = userManager.
                       GenerateEmailConfirmationTokenAsync(newUser).Result;

                string confirmationLink = Url.Action("ConfirmEmail",
                  "Account", new
                  {
                      userid = newUser.Id,
                      token = confirmationToken
                  },
                   protocol: HttpContext.Request.Scheme);
                var callbackUrl = Url.Action("confirmEmail", "api/auth",
                                   new { userId = newUser.Id.ToString(), code = confirmationToken },
                                   protocol: HttpContext.Request.Scheme);
                callbackUrl = $"http://localhost:49181/api/auth/confirmemail?userId=" + newUser.Id.ToString() + $"&token={confirmationToken}";


                 SendEmail(callbackUrl, newUser);



            }

            UserViewModel _userVM =
                  Mapper.Map<AppUser, UserViewModel>(newUser);
            return new OkObjectResult(_userVM);
        }
        catch (Exception ex)
        {
            _logger.LogError($"Exception thrown while creating JWT: {ex}");
        }
        return BadRequest();
}
c# .net visual-studio postman
1个回答
0
投票

现在工作,数据库中已经注册了重复的值。注释掉

[ValidateAntiForgeryToken]
并运行指向每个单独组件的代码断点后,发现问题并纠正并获得所需的输出。

© www.soinside.com 2019 - 2024. All rights reserved.