ASP中带AuthorizationFilterAttributes的条件OR.. NET Web API 2

本文关键字:NET Web API OR 条件 中带 AuthorizationFilterAttributes ASP | 更新日期: 2023-09-27 17:52:36

我正在写一个控制器动作,可以由两组用户之一访问;每个组都有自己的AuthorizationFilterAttribute实现,其中包含定义如何授权组的自定义逻辑。我希望能够使用条件OR来确定至少满足了授权筛选器的一个属性。

我希望我能做这样的事情:

public class ConfigController : ApiController
    {
        [AdminAuthorize || DealRoomAuthorizeAttribute]
        public IHttpActionResult GetBlah()
        {
            return Ok();
        }
    }

但是运气不好!对如何实现这一点有什么想法吗?

ASP中带AuthorizationFilterAttributes的条件OR.. NET Web API 2

由于授权属性的工作方式,您不能直接执行OR操作:如果授权失败,它们会"切断"管道,因此,如果第一个失败,它将停止管道,而另一个将没有机会执行。

您需要实现自己的授权属性,使OR成为您自己的。它非常容易实现,因为您只需要重用现有属性的逻辑。实际上,您可以继承其中一个,并通过重用现有逻辑重写派生方法,至少是OnAuthorization

更多细节:

    <
  • AuthorizeAttribute类/gh>
  • ASP。. NET Web API安全过滤器
  • CodeProject WebAPI Security -自定义授权过滤器