gpt4 book ai didi

c# - 在 Web API 2 上执行操作之前做一些事情

转载 作者:太空狗 更新时间:2023-10-30 01:32:15 25 4
gpt4 key购买 nike

我想在我的 Web API 的某些操作之前做一些事情。比如抛出一个错误...

public class OnlyAuthorized : ActionFilterAttribute
{
public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
{
if (!IsValidAuthorization(actionExecutedContext.Request.Headers.Authorization?.Parameter))
{
throw new HttpResponseException(HttpStatusCode.Unauthorized);
}

actionExecutedContext.Response?.Headers.Add("Access-Control-Allow-Origin", "*");
base.OnActionExecuted(actionExecutedContext);
}

public bool IsValidAuthorization(string token)
{
return token != null;
}
}

但是它是在 Action 之后执行的,而不是在 Action 之前。因此,尽管有时请求未被授权执行操作,但始终会达到操作逻辑。

我该怎么做?

如果无法使用属性执行此操作,我认为我可以处理一个能够拦截所有 POST 请求的解决方案。

最佳答案

您覆盖 OnActionExecuted 而不是 OnActionExecuting参见 https://msdn.microsoft.com/en-us/library/system.web.http.filters.actionfilterattribute(v=vs.118).aspx

OnActionExecuted(ActionExecutedContext):在 action 方法执行后由 ASP.NET MVC 框架调用。

OnActionExecuting(ActionExecutingContext):在 action 方法执行之前由 ASP.NET MVC 框架调用

关于c# - 在 Web API 2 上执行操作之前做一些事情,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37642938/

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