您如何实现对资源列表的授权?
我看到的所有文档都基于IAuthorizationService和AuthorizeAsync方法。但这仅适用于一种资源。
我应该检索所有资源,然后使用IAuthorizationService的AuthorizeAsync方法强制检查用户是否可以访问吗?这似乎非常棘手,缓慢且效率低下。
您将如何做?
答案 0 :(得分:0)
我已经在几个项目中实现了这一点,除了从数据库中获取所有资源,然后在每个项目上执行AuthorizeAsync之外,据我所知,您无能为力。
在某些情况下,您可以在数据库中具有映射表,该映射表存储resourceId / userId并根据该表进行检查。这样,无需在每个对象上执行AuthorizeAsync即可轻松获取项目,但不适用于每种情况...
关于此主题有一些问题(例如https://github.com/dotnet/AspNetCore.Docs/issues/10244),但没有解决方案。