gpt4 book ai didi

c# - 在 Controller 操作之前调用的 WebAPI 函数

转载 作者:太空宇宙 更新时间:2023-11-03 13:37:01 24 4
gpt4 key购买 nike

我正在使用 Microsoft ASP.NET Web API 开发 RESTful 服务。

我需要的是某种处理程序函数,每次调用服务时,在我的流程进入 Controller 方法之前触发该函数。

比方说,我可以调用我的数据库并检查请求 header 中提供的哈希 token 是否具有通过 API 检索数据的权限,然后,如果有,则继续 Controller 方法。

WebAPI 中是否有我需要的可编程位置?我对 Web API 数据流不是很熟悉。

最佳答案

What I need is to have some kind of handler function, which is triggered every time when service is called, before my flow enters into controller method.

你可以写一个 custom message handler .例如 MSDN 文章中所示:

public class ApiKeyHandler : DelegatingHandler
{
public string Key { get; set; }

public ApiKeyHandler(string key)
{
this.Key = key;
}

protected override Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request, CancellationToken cancellationToken)
{
if (!ValidateKey(request))
{
var response = new HttpResponseMessage(HttpStatusCode.Forbidden);
var tsc = new TaskCompletionSource<HttpResponseMessage>();
tsc.SetResult(response);
return tsc.Task;
}
return base.SendAsync(request, cancellationToken);
}

private bool ValidateKey(HttpRequestMessage message)
{
var query = message.RequestUri.ParseQueryString();
string key = query["key"];
return (key == Key);
}
}

关于c# - 在 Controller 操作之前调用的 WebAPI 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18363126/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com