ODatacontroller 发送 $expand 中提到的每个相关对象
ODatacontroller send every related object which have mentioned in $expand
使用 OData 控制器和 ODataQueryOption 以及 entity framework 允许我们提及我们需要通过 entity framework 从数据库中检索的字段。在 $select 参数中我们可以指定字段。
$select: 'Id,PersonnelNumber,FirstName,LastName,Gender,MaritalStatus,Department/Code,Department/Name',
$expand: 'Department'
如您所见,也可以指定要检索的相关对象(在本例中为部门),在$expand参数中提到。
问题是,这个选项不是准备安全问题吗?由于它可以在客户端提供,任何人都可以向其添加另一个参数并检索没有权限查看的数据。
例如,我可以将 PayRoll 添加到 $expand 参数并检索人员的薪水。
$expand: 'PayRolls'
我们如何在 ODataQuery 选项和 OData 控制器中处理此功能?
谢谢
我觉得NonExpandableAttribute
可以满足你的要求
例如,您可以将以下属性放在您不希望客户扩展的 属性 上:
public class Customer
{
public int ID { get; set; }
[NotNavigable]
[NotExpandable]
public PayRollType PayRolls{ get; set; }
}
使用convention model builder构建EdmModel后,会查询失败:
~/odata/Customers?$expand=PayRolls
有错误信息:
"The query specified in the URI is not valid. The property 'PayRolls' cannot be used in the $expand query option."
使用 OData 控制器和 ODataQueryOption 以及 entity framework 允许我们提及我们需要通过 entity framework 从数据库中检索的字段。在 $select 参数中我们可以指定字段。
$select: 'Id,PersonnelNumber,FirstName,LastName,Gender,MaritalStatus,Department/Code,Department/Name',
$expand: 'Department'
如您所见,也可以指定要检索的相关对象(在本例中为部门),在$expand参数中提到。
问题是,这个选项不是准备安全问题吗?由于它可以在客户端提供,任何人都可以向其添加另一个参数并检索没有权限查看的数据。 例如,我可以将 PayRoll 添加到 $expand 参数并检索人员的薪水。
$expand: 'PayRolls'
我们如何在 ODataQuery 选项和 OData 控制器中处理此功能?
谢谢
我觉得NonExpandableAttribute
可以满足你的要求
例如,您可以将以下属性放在您不希望客户扩展的 属性 上:
public class Customer
{
public int ID { get; set; }
[NotNavigable]
[NotExpandable]
public PayRollType PayRolls{ get; set; }
}
使用convention model builder构建EdmModel后,会查询失败:
~/odata/Customers?$expand=PayRolls
有错误信息: "The query specified in the URI is not valid. The property 'PayRolls' cannot be used in the $expand query option."