【问题标题】:Conditional OR with AuthorizationFilterAttributes in ASP.NET Web API 2ASP.NET Web API 2 中带有 AuthorizationFilterAttributes 的条件 OR
【发布时间】:2015-08-15 11:52:19
【问题描述】:

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

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

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

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

【问题讨论】:

  • 通常你为所有成员定义一个类,并使用构造函数参数来区分谁有访问权限。这允许您定义一组允许 OR 逻辑的构造函数参数。 Here is an example

标签: c# asp.net asp.net-web-api asp.net-authorization


【解决方案1】:

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

您需要实现自己的授权属性来自己制作 OR。它很容易实现,因为您只需重用现有属性的逻辑。实际上,您可以继承其中一个,并通过重用现有逻辑来覆盖被派生的方法,至少 OnAuthorization

更多细节:

【讨论】:

    猜你喜欢
    • 2017-02-21
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    • 2019-12-04
    • 2019-05-15
    • 2014-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多