首页 > 解决方案 > 定义一个 WebAPI 方法,该方法的限制少于其授权类

问题描述

我正在寻找一个具有属性的 ApiController ,[Authorize(Role="something")]以便默认情况下添加到控制器的任何方法都需要“某物”角色,但我想让控制器上的一些方法比这更少限制,但不是匿名的。我已经尝试了以下(单独,不是一次全部):

[Authorize(Role="*")]
[Authorize(Role="Any")]
[Authorize(Role="")]
[Authorize]
[Authorize(Users="*", Roles="")]

但是这些似乎都不起作用,仍然要求登录用户具有更严格的“某事”角色。我不想更改类级别Authorize属性,因为这会使将来添加的方法容易得不到正确保护。

标签: c#asp.net-web-apiasp.net-web-api2authorization

解决方案


据我所知,这是不可能的;我遇到了同样的问题,并同意这对安全性很不利。不幸的是,在 ASP.Net 中有很多模式使得遵循良好的安全实践实际上非常困难——人们所能做的就是保持警惕。

您可以考虑将不太安全的方法移动到一个完全不同的 API 控制器中,只是为了始终允许在类范围内进行最具限制性的安全声明。


推荐阅读