猿问

如何在 ASP.NET Core Web API 中的每个方法中进行模型验证?

我正在使用 Web API 进入 ASP.NET Core 2.0。我的第一个方法之一是我的登录:


/// <summary>

/// API endpoint to login a user

/// </summary>

/// <param name="data">The login data</param>

/// <returns>Unauthorizied if the login fails, The jwt token as string if the login succeded</returns>

[AllowAnonymous]

[Route("login")]

[HttpPost]

public IActionResult Login([FromBody]LoginData data)

{

    var token = _manager.ValidateCredentialsAndGenerateToken(data);

    if (token == null)

    {

        return Unauthorized();

    }

    else

    {

        return Ok(token);

    }

}

我LoginData使用 DataAnnotations:


public class LoginData

{

    [Required]

    [MaxLength(50)]

    public string Username { get; set; }


    [Required]

    public string Password { get; set; }


    [Required]

    [MaxLength(16)]

    public string IpAddress { get; set; }

}

因此,ModelState当登录发生时我的自动填充良好,例如密码为空(当然在客户端也应该稍后对其进行验证)。

最好的方法是什么

  • 检查模型状态,

  • 从所有错误中获取可读字符串

  • 返回一个BadRequest有这个错误?

当然,我可以用辅助方法自己编写。但我想过一个过滤器吗?


GCT1015
浏览 182回答 3
3回答

长风秋雁

我强烈推荐使用[ApiController]和其他有助于简化基于 Web API 的项目中的验证的属性。[ApiController]此属性在进入方法之前为您对模态进行所有基本验证。因此,如果您想进行某种形式的自定义验证,您只需检查模态。
随时随地看视频慕课网APP
我要回答