【发布时间】:2017-02-26 20:54:16
【问题描述】:
我想使用密钥授权我的 web api,但它总是显示“此请求的授权已被拒绝”。以下是我尝试的最后一个代码。
这是委托处理程序类:
// Message Handler class
public class APIKeyFilter: DelegatingHandler
{
// Default API Key
private const string APIKEY = "b018a9c5105d427127e";
protected override Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request, CancellationToken cancellationToken)
{
var query = request.RequestUri.ParseQueryString();
string key = query["key"];
if (APIKEY!=key)
{
var response = new HttpResponseMessage(HttpStatusCode.Forbidden);
var tsc = new TaskCompletionSource<HttpResponseMessage>();
tsc.SetResult(response);
return tsc.Task;
}
return base.SendAsync(request, cancellationToken);
}
}
这是全局类:
public class Global : HttpApplication
{
void Application_Start(object sender, EventArgs e)
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
RouteConfig.RegisterRoutes(RouteTable.Routes);
GlobalConfiguration.Configuration.MessageHandlers.Add(new Filter.APIKeyFilter());
}
}
这是我的 api 控制器:
[Authorize]
public class CategoriesController : ApiController
{
private WebAPI2Context db = new WebAPI2Context();
// GET: api/Categories
public IQueryable<Category> GetCategories()
{
return db.Categories;
}
}
有没有办法解决这个问题?我尝试用谷歌搜索,我发现所有结果都不适合我。
【问题讨论】:
标签: c# asp.net-web-api asp.net-mvc-5