c# - 定义一个 WebAPI 方法,该方法的限制少于其授权类
问题描述
我正在寻找一个具有属性的 ApiController ,[Authorize(Role="something")]
以便默认情况下添加到控制器的任何方法都需要“某物”角色,但我想让控制器上的一些方法比这更少限制,但不是匿名的。我已经尝试了以下(单独,不是一次全部):
[Authorize(Role="*")]
[Authorize(Role="Any")]
[Authorize(Role="")]
[Authorize]
[Authorize(Users="*", Roles="")]
但是这些似乎都不起作用,仍然要求登录用户具有更严格的“某事”角色。我不想更改类级别Authorize
属性,因为这会使将来添加的方法容易得不到正确保护。
解决方案
据我所知,这是不可能的;我遇到了同样的问题,并同意这对安全性很不利。不幸的是,在 ASP.Net 中有很多模式使得遵循良好的安全实践实际上非常困难——人们所能做的就是保持警惕。
您可以考虑将不太安全的方法移动到一个完全不同的 API 控制器中,只是为了始终允许在类范围内进行最具限制性的安全声明。
推荐阅读
- python-3.5 - 我没有得到预期的结果,我想知道代码有什么问题
- terraform - Terraform 无法通过索引引用资源
- css - 是否有可能(没有 JS)让父 div 缩小以适应包装的子元素?
- python - Python如何使用请求模块发布已编码的表单
- sql - SSRS 2016:无法设置默认参数值
- javascript - 在 React 中将单独的日期和时间转换为时间戳
- apache-nifi - 如何用 NULL 替换从 ExecuteSQL 中提取的 NIFI 属性值
- python - 无法在 tkinter 中对齐三个文本小部件
- firebase - Firebase Web 性能分布图上的百分比值
- swift - Google Maps API didDrag、didBeginDragging、didEndDragging 函数不起作用