asp.net 到单个端点的多个对象

Multiple objects to single endpoint with asp.net

我正在构建具有 asp.net 核心的 Restful API。我有一个用于对用户进行身份验证的端点。我有两种用户,一种是管理员,一种是“FilmStudio”。我成功地对用户(管理员)进行了身份验证,但我还需要能够使用用户名和密码对 FilmStudio 进行身份验证。无论如何我可以用一个端点来做到这一点?

这是我从 UsersController 端点:

        [AllowAnonymous]
        [HttpPost("Authenticate")]
        public IActionResult Authenticate([FromBody] UserDto model)
        {

            var user = _userRepo.Authenticate(model.UserName, model.Password);

            if (user !=null)
            {
               
                if (user == null)
                {
                    return BadRequest("The username or password is incorrect.");
                }


                return Ok(new
                {
                    Id = user.UserId,
                    Username = user.UserName,
                    Role = user.Role,
                    Token = user.Token
                });

            }
            else
            {
                var filmStudioDto = new FilmStudioDto();
                var studio = _studioRepo.Authenticate(model.Name, model.Password);
                if (studio == null) 
                {
                    return BadRequest("The username or password is incorrect.");
                }

                return Ok(new
                {
                    Id = studio.StudioId,
                    Username = studio.Name,
                    City = studio.City,
                    Role = studio.Role,
                    Token = studio.Token
                });
            }
        }

    }

当我为管理员用户提供用户名和密码时,它起作用了。但是,当我尝试输入 FilmStudio 的用户名和密码时,我总是收到错误消息:“用户名或密码不正确。”

你也可以尝试使用 model.Name model.UserName 代替工作室

 else
 {
     var studio = _studioRepo.Authenticate(model.UserName, model.Password);
     if (studio == null) 
           return BadRequest("The username or password is incorrect.");
 

      return Ok( new FilmStudioDto
      {
            Id = studio.StudioId,
           Username = studio.Name,
             City = studio.City,
             Role = studio.Role,
             Token = studio.Token
       });
}

恕我直言,您也可以修复用户部分


      if (user !=null)
      return Ok(new UserDto 
     {
       Id = user.UserId,
        Username = user.UserName,
         Role = user.Role,
        Token = user.Token
    });
[AllowAnonymous]
    [HttpPost("Authenticate")]
    public IActionResult Authenticate([FromBody] UserDto model)
    {
        if (model.UserName != null) // Check if UserName is null or not
        {
            var user = _userRepo.Authenticate(model.UserName, model.Password);
            if (user == null)
            {
                return BadRequest("The username or password is incorrect.");
            }

            return Ok(new
            {
                Id = user.UserId,
                Username = user.UserName,
                Role = user.Role,
                Token = user.Token
            });
        }
        else
        {
            var studio = _studioRepo.Authenticate(model.StudioName, model.StudioPassword);
            if (studio == null) 
            {
                return BadRequest("The username or password is incorrect.");
            }

            return Ok(new
            {
                Id = studio.StudioId,
                Username = studio.Name,
                City = studio.City,
                Role = studio.Role,
                Token = studio.Token
            });
        }
    }
}