无法在存储库中返回 Ok() 、 Unauthorized()、 BadRequest() c# .net core

Oma*_*uma 2 c# model-view-controller asp.net-mvc asp.net-core

我实现了一个IUserRepository,在其中实现登录和注册UserRepository;这是我的代码

public async Task<IActionResult> LoginAsync([FromBody] UserCred user)
{
    var result = await _signInManager.PasswordSignInAsync(user.username, user.password, user.rememberMe, false);

    if (result.Succeeded)
    {
        var token = _jwtAuthenticationManager.Authenticate(user.username, user.password);
        if (token == null)
            return Unauthorized();
        return Ok(token);
    }
    return BadRequest();
}
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下错误:

当前上下文中不存在名称“BadRequest”

Ok和 也一样Unauthorized

但是,当我直接在我的userController. 我想我只能BadRequest在控制器中返回?有什么办法可以克服这个问题,因为如果不是IActionResult,我将如何检查是否results.Succeeded

此外,这是我的UserController

[HttpPost]
[AllowAnonymous]
[Route("login")]
public async Task<IActionResult> Login([FromBody] UserCred user)
{
   return await _userRepository.LoginAsync(user);
}
Run Code Online (Sandbox Code Playgroud)

小智 7

BadRequest()是控制器本身的一个方法。

最好从 中返回一个值IUserRepository,例如 null 或 token,然后在控制器中将该值映射到OkBadRequest响应。
决定响应类型是控制器本身的责任。
放置在控制器中的这样的代码应该可以完成这项工作:

token = await _userRepository.LoginAsync(user);
return token == null ? BadRequest() : Ok(token);
Run Code Online (Sandbox Code Playgroud)