多个Get方法OData

时间:2016-05-26 21:04:51

标签: c# odata authorize

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

在这种情况下,与OData一起使用的最佳uri约定是什么?我想过像http://example.com/odata/Dashboards那样只提供拥有的仪表板和http://example.com/odata/Dashboards/Any,可以访问任何仪表板实体,但我真的不确定它是什么方式。

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

你们有什么建议吗?如果您有一些教程可以解释授权方面的复杂案例,我真的很感兴趣。

谢谢!

1 个答案:

答案 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 ...
}