多个 Get 方法 OData

Multiple Get method OData

在许多实体上,一些用户有权请求他们的实体或任何实体。用户可以制作多个仪表板。普通用户应该只查询他们自己的仪表板,而管理员应该能够看到任何仪表板。

在这种情况下,与 OData 一起使用的最佳 uri 约定是什么?我考虑过 http://example.com/odata/Dashboards that will give only owned dashboards and http://example.com/odata/Dashboards/Any 之类的东西,它可以访问任何仪表板实体,但我真的不确定这是要走的路。

似乎没有人在教程中解释如何处理复杂的授权,而不仅仅是关于访问任何东西或什么都没有。

你们对此有何建议?如果您有一些教程可以解释有关授权的复杂情况,我真的很感兴趣。

谢谢!

如何使用 http://example.com/odata/Users(1)/Default.Dashboards() 和用户控制器的 Dashboards 功能,return 相关的仪表板。

builder.EntityType<User>().Function("Dashboards").ReturnsCollectionFromEntitySet<Dashboard>("Dashboards");

[HttpGet]
[ODataRoute("Users({key})/Default.Dashboards()")]
public IQueryable<Dashboard> Dashboards(int key)
{
    // determine the user's rights
    return _db.Dashboard.Where ...
}