【发布时间】:2012-12-02 18:32:30
【问题描述】:
我正在使用 asp.net WebAPI,我需要创建一个自定义 ActionFilter,它可以快速检查请求 URI 的用户是否实际上应该能够取回数据。
他们已通过基本身份验证获得使用网络服务的授权,并且他们的角色已通过自定义角色提供者进行验证。
我需要做的最后一件事是检查他们是否有权查看他们使用 URI 中的参数请求的数据。
这是我的代码:
public class AccessActionFilter : FilterAttribute, IActionFilter
{
public System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> ExecuteActionFilterAsync(HttpActionContext actionContext, System.Threading.CancellationToken cancellationToken, Func<System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage>> continuation)
{
var result = //code to see if they have permission returns either 0 or 1
if (result==0) {
throw new ArgumentException("You do not have access to this resource");
}
return continuation();
}
}
目前我只是抛出一个不是我想要的错误,我宁愿返回 System.Net.HttpStatusCode.Unauthorized 但我对我覆盖的方法有点恼火,我并不完全理解它。
我将如何返回该值?
【问题讨论】:
-
由于不仅缺少授权,而是提供了身份但用户无权访问,因此正确的 HTTP 响应是 403 Forbidden。
标签: asp.net-mvc-4 asp.net-web-api action-filter