0

如果我想在我的 odata 插入/更新/删除/查询端点中注入一些代码,有没有办法做到这一点?

例如:

  • 在查询时,我想注入基于安全性的进一步限制(例如,如果角色为 x,则返回数据子集)。
  • 在更新时,我想防止某些字段被更新(如 CreateDate),因此需要某种形式的过度保护。或者我不想让常规用户更新管理数据列。
  • 在插入/更新时,我希望基于服务器的逻辑计算某些列值并进一步触发某些服务器操作。
  • 删除时我想取消删除,将记录插入审计表并设置实体的 DeleteDate 列 - AKA 软删除。

这些可能吗?有关如何执行此操作的任何文件/教程?

谢谢

4

2 回答 2

0

我们没有列级安全,只有表级。但是,您可以使用 before/after 事件来实现您想要的,例如 beforeCreate、beforeUpdate,您可以在其中插入服务器端 javascript 代码进行干预。

于 2013-06-10T10:28:19.540 回答
0

我推荐有关JayData 中的事件处理程序的最新博文- 实体 EntitySet 之前/之后的事件是您可以在 JayStorm PaaS 应用程序管理器上自定义的事件。

实现基于角色的行为: “this”变量包含一个用户,您可以使用它来实现自定义逻辑。

var self = this; //it's better to avoid confusions later
var currentUser = self.User;

检查用户组成员资格:

if (currentUser.Groups.indexOf('admin') <0 ){
  items.forEach(function(it)){
    //items is an array of created/updated/deleted entities
  }
}

用户属性: Groups - 返回一个字符串数组 Login、FirstName、LastName、Enabled、Password

Softdelete 这需要自定义开发。我建议您禁止对安全组执行删除操作并发布服务方法来提供此功能。

于 2013-06-17T06:13:39.287 回答