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

Not*_*bad 5 asp.net-authorization .net-core asp.net-core asp.net-core-webapi

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

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

我是否应该检索所有资源,然后使用 IAuthorizationService 的 AuthorizeAsync 方法强制检查用户是否有权访问?这看起来非常笨拙、缓慢且低效。

你会怎么做?

Nem*_*vic 1

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

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

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