c# - ASP.Net Core 2.1 中的自定义授权过滤器与策略
问题描述
我正在设计一个新的 ASP.Net CORE 2.1 WebAPI,并试图找出实现符合我们需求的授权系统的最佳方法。我们的角色和权限是数据库驱动的,可以混合和匹配基于角色和个人资源的权限。因此,对于给定的端点,默认访问权限可能是基于角色的(例如仅管理员),但管理员也可以分配单个用户对该端点的访问权限(或相反;并撤销对该角色授予的特定资源的访问权限)。因此,每个端点授权都需要一个数据库查询来确定对该资源的有效访问。在我看来,这里需要一个自定义授权过滤器,但许多 MS 文档和其他资源推动基于策略的身份验证,并建议不要“滚动你自己的”。我不 看不到基于策略的解决方案如何在这里工作,因为它基于静态策略声明。政策能否满足我们的需求,或者自定义身份验证过滤器是否可行?
解决方案
策略认证是要走的路。是的,它可能基于某种“静态”策略,即多个动作/控制器可能最终使用类似的东西[Authorize(Policy = "MyPolicy")]
,但策略本身不是静态的。您可以在策略处理程序中定义任意数量的条件。你也可以混搭。因此,如果说某些内容仅对“Foo”角色可用,但您还需要由“Bar”策略定义的对象级权限,您当然可以执行类似[Authorize(Roles = "Foo", Policy = "Bar")]
.
推荐阅读
- python - 大型数据集的 Python3 pysal 错误消息
- php - ChartJs php 数组转换为“标签”和“数据集”
- python - Python:Scikit-learn 中文本数据的 StandardScaler 问题
- wordpress - WordPress /嵌入/链接
- html - 在 Ruby on Rails 中使用 # 存根
- php - 执行 PHP 脚本时未在 Postman 中获取任何结果数据
- jquery - CRM 2011 Rest Builder 解决方案在执行或调用时出现 500 内部错误
- c# - 如何在 RavenDB 3.5 中以编程方式创建 ETL?
- android - 像电报一样的画廊条
- source-insight - sourceInsight 选项卡缩进