ASP.NET Web API 2 中带有 AuthorizationFilterAttributes 的条件 OR
Posted
技术标签:
【中文标题】ASP.NET Web API 2 中带有 AuthorizationFilterAttributes 的条件 OR【英文标题】:Conditional OR with AuthorizationFilterAttributes in ASP.NET Web API 2 【发布时间】:2015-08-15 11:52:19 【问题描述】:我正在编写一个可由两组用户之一访问的控制器操作;每个组都有自己的AuthorizationFilterAttribute
实现,其中包含定义如何授权组的自定义逻辑。我希望能够使用条件 OR 来确定至少满足了一个属性授权过滤器。
我希望我能做这样的事情:
public class ConfigController : ApiController
[AdminAuthorize || DealRoomAuthorizeAttribute]
public IHttpActionResult GetBlah()
return Ok();
但没有运气!关于如何实现这一点的任何想法?
【问题讨论】:
通常你为所有成员定义一个类,并使用构造函数参数来区分谁有访问权限。这允许您定义一组允许 OR 逻辑的构造函数参数。 Here is an example 【参考方案1】:由于授权属性的工作方式,您不能直接执行 OR:如果授权失败,它们会“切断”管道,因此,如果第一个失败,它将停止管道,而另一个将没有有机会被处决。
您需要实现自己的授权属性来自己制作 OR。它很容易实现,因为您只需重用现有属性的逻辑。实际上,您可以继承其中一个,并通过重用现有逻辑来覆盖被派生的方法,至少 OnAuthorization
。
更多细节:
AuthorizeAttribute Class ASP.NET Web API Security Filters CodeProject WebAPI Security – Custom Authorization Filters【讨论】:
以上是关于ASP.NET Web API 2 中带有 AuthorizationFilterAttributes 的条件 OR的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio 中带有 ASP.NET Web API 项目的 Angular 项目
ASP.NET Web API 2 Bearer Token 重定向到登录页面而不是返回 401