在许多实体上,某些用户有权要求其实体或任何实体。用户可以制作多个仪表板。普通用户应该只查询自己的仪表板,而管理员应该能够看到任何仪表板。
在这种情况下,与OData一起使用的最佳uri约定是什么?我想过像http://example.com/odata/Dashboards那样只提供拥有的仪表板和http://example.com/odata/Dashboards/Any,可以访问任何仪表板实体,但我真的不确定它是什么方式。
似乎没有人在教程中解释如何处理复杂的授权,而不仅仅是关于访问任何内容或什么都没有。
你们有什么建议吗?如果您有一些教程可以解释授权方面的复杂案例,我真的很感兴趣。
谢谢!
答案 0 :(得分:1)
如何使用http://example.com/odata/Users(1)/Default.Dashboards()并在用户控制器的Dashboards
功能中返回相关的信息中心。
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 ...
}