我如何发送"禁止"我的Web API 2解决方案中的响应?

时间:2014-05-19 20:02:37

标签: c# asp.net-web-api asp.net-web-api2

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

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

在我的方法中,如果我无法验证它,我希望validateToken()方法返回“禁止”的httpresponse。我该怎么做呢?

3 个答案:

答案 0 :(得分:6)

您可以像这样使用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)。

答案 1 :(得分:4)

通常,您在ActionFilterAttribute中执行ValidateToken类型调用,并在控制器上调用Get方法之前很久就返回禁用。然后,您将该属性应用于控制器或操作方法(如果需要授权所有调用,则将其注册为全局操作过滤器属性)。

答案 2 :(得分: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

相关问题