我如何发送一个“禁止”响应在我的Web API 2解决方案

本文关键字:响应 我的 Web 解决方案 API 禁止 何发送 一个 | 更新日期: 2023-09-27 18:04:18

我正在制作一个web api与遗留系统一起工作。这个web api应该以与旧的相同的方式工作。安全性是在每次调用时发送安全令牌。这意味着我需要在提供数据之前检查令牌。我有一个这样的方法:

public List<User> Get(string id, string securityToken)
        {
            //ValidateToken(securityToken);
            return userRepository.LoadAll();
        }

在我的方法中,我希望validateToken()方法返回一个"禁止的"httpresponse,如果我不能验证它。我该怎么做呢?

我如何发送一个“禁止”响应在我的Web API 2解决方案

IHttpActionResult:

return StatusCode(HttpStatusCode.Forbidden);

或:

return Content(HttpStatusCode.Forbidden, "message");

HttpResponseMessage:

return this.Request.CreateErrorResponse(HttpStatusCode.Forbidden, "message");

如果您想让自定义控制器实现Forbidden(),就像BadRequest()或任何其他响应一样,请参阅此示例。

https://stackoverflow.com/a/28361376/3850405

可以这样使用HttpResponseMessage:

public HttpResponseMessage Get(string id, string securityToken)
{
    var forbidden = true;
    if (forbidden)
    {
        return this.Request.CreateResponse(HttpStatusCode.Forbidden);
    }
    return Ok(userRepository.LoadAll());
}

使用HttpResponseMessage允许您返回OK (HTTP 200)的内容,或一个错误。

通常您会在ActionFilterAttribute中执行ValidateToken类型调用,在控制器上调用Get方法之前返回当时的forbidden。然后将该属性应用于控制器或操作方法(或者如果需要授权所有调用,则将其注册为全局操作筛选器属性)。