资源列表的基于资源的授权?

Resource Based authorization for a list of reosurces?

如何实现对资源列表的授权?

我看到的所有文档都基于 IAuthorizationService 和 AuthorizeAsync 方法。但是,这仅适用于一种资源。

我是否应该检索所有资源,然后使用 IAuthorizationService 的 AuthorizeAsync 方法强制检查用户是否具有访问权限?这看起来很笨拙,缓慢且无能。

你会怎么做?

我已经在我的几个项目中实现了这个,除了从数据库中获取所有资源然后在每个资源上执行 AuthorizeAsync 之外,您无能为力(据我所知)。

在某些情况下,您可以在存储 resourceId/userId 的数据库中映射 table 并根据它进行检查。无需对每个项目执行 AuthorizeAsync 即可以这种方式获取项目更容易,但它并不适用于每个场景...

关于这个主题有几个问题(例如https://github.com/dotnet/AspNetCore.Docs/issues/10244)但没有解决方案。