繁体   English   中英

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

[英]Conditional OR with AuthorizationFilterAttributes in ASP.NET Web API 2

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

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

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

但是没有运气! 关于如何实现这一点的任何想法?

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

您需要实现自己的授权属性,使您自己成为OR。 这非常容易实现,因为您只需要重用现有属性的逻辑即可。 实际上,您可以继承它们之一,并通过重用现有逻辑来覆盖已废弃的方法,至少是OnAuthorization

更多细节:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM