gpt4 book ai didi

c# - ASP.NET Web API 覆盖处理程序的授权过滤器

转载 作者:行者123 更新时间:2023-11-30 16:03:18 27 4
gpt4 key购买 nike

如何禁用 Web API 中特定 GET 处理程序的授权过滤器?

在类级别有一个自定义授权过滤器,但对于其中一种方法,我需要没有安全性。我尝试应用 [AllowAnonymous] 属性,但它仍然通过更高级别的过滤器运行并失败。该自定义过滤器派生自 AuthorizationFilterAttribute。该类还有另外两个属性:OverrideAuthenticationEnableCors

我尝试了 AllowAnonymous 属性,但它没有。

示例代码:

[EnableCors(origins: "*", headers: "*", methods: "*")]
[OverrideAuthentication]
[AccountAuthorization]
public class AccountsController : ApiController
{

[Route("api/accounts/{accountNumber}/GetX")]
[AllowAnonymous]
[HttpGet]
public HttpResponseMessage GetX(string accountNumber)
{
HttpResponseMessage response = null;
IEnumerable<string> apiKey;
if (!Request.Headers.TryGetValues("X-ApiKey", out apiKey) || apiKey.Count() != 1 || apiKey.First() != API_KEY)
{
throw new HttpResponseException(HttpStatusCode.Forbidden);
}

// Process
// ..
// ..

return response;
}
}

编辑:链接的答案没有解释解决方案。

最佳答案

终于明白了。

由于在类/ Controller 级别已经存在自定义授权过滤器,因此,要覆盖特定的操作处理程序(方法)并让它在没有任何授权过滤器的情况下工作,我们需要在 Controller /类(class)。所以添加 OverrideAuthorization 过滤器就可以了。现在 AllowAnonymous 将发挥它的魔力。

[Route("api/accounts/{accountNumber}/GetX")]
[AllowAnonymous]
[OverrideAuthorization]
[HttpGet]
public HttpResponseMessage GetX(string accountNumber)
{
// Process
// ..
// ..
}

关于c# - ASP.NET Web API 覆盖处理程序的授权过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36559273/

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