【发布时间】:2018-05-23 06:27:39
【问题描述】:
我正在使用 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并出现此错误?
当然,我可以用辅助方法自己编写。但我可能考虑过过滤器?
【问题讨论】:
-
您可能要考虑使用WebAPIContrib.Core,其中包括一个
ValidationAttribute(过滤器)。至少,它可以成为如何自己构建东西的灵感。
标签: c# asp.net-core .net-core asp.net-core-webapi modelstate