1

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

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

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

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

4

1 回答 1

1

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

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

更多细节:

于 2015-06-02T08:05:17.663 回答