ASP.Net Core 2.1中的自定义授权过滤器与策略

问题描述 投票:0回答:1

我正在设计一个新的ASP.Net CORE 2.1 WebAPI,我正在努力找出实现符合我们需求的授权系统的最佳方法。我们的角色和权限是数据库驱动的,可以混合和匹配基于角色和单个资源的权限。因此,对于给定端点,默认访问可以是基于角色的(例如仅限管理员),但是管理员还可以为单个用户分配对该端点的访问权(或相反的;以及撤销对该角色另外授予的特定资源的访问权)。因此,每个端点授权都需要DB查询来确定对该资源的有效访问。在我看来,这里需要一个自定义授权过滤器,但许多MS文档和其他资源推送基于策略的身份验证,并建议不要“滚动自己的”。我没有看到基于策略的解决方案如何在这里工作,因为它基于静态策略声明。我们的需求可以通过策略满足,还是自定义身份验证过滤器的方式?

c# asp.net-core asp.net-core-webapi
1个回答
0
投票

政策认证是要走的路。是的,它可能基于某种“静态”策略,即多个动作/控制器可能最终使用像[Authorize(Policy = "MyPolicy")]这样的东西,但是策略本身并不是静态的。您可以在策略处理程序中定义任意数量的条件。你也可以混合搭配。因此,如果说某些内容仅适用于“Foo”角色,但您还需要“Bar”策略定义的对象级权限,那么您当然可以执行类似[Authorize(Roles = "Foo", Policy = "Bar")]的操作。

© www.soinside.com 2019 - 2024. All rights reserved.