更新:
这里有两篇文章可以帮助您入门:
帖子中经常使用的$data.createODataServer
方法是一种方便的方法,它对您隐藏连接/快递管道。要与管道交互,请检查$data.createODataServer
node_modules/odata-server 文件夹中的函数方法体。
忽略下面的文字
身份验证必须通过连接管道来解决,为此有大量的中间件。
对于授权 EntityContext 构造函数接受一个必须知道承诺的授权函数。
all-allow 授权者看起来像这样。
function checkPerm(access, user, entitysets, callback) {
var pHandler = new $data.PromiseHandler();
var clbWrapper = pHandler.createCallback(callback);
var pHandlerResult = pHandler.getPromise();
clbWrapper.success(true); // this grants a joker rw permission to everyone
//consult user, entitySet and acces to decide on success/error
//since you return a promise you can call async stuff (will not be fast though)
return pHandlerResult;
}
我必须就让您将其传递到构建过程的语法咨询其中一位团队成员 - 但我可以确认这是可行的并且受支持。我会尽快回复答案。
对用户进行身份验证后,您还可以使用EntityContext 级别事件来拦截读取/更新/创建/删除操作。
$data.EntityContext.extend({
MySet: { type: $data.EntitySet, elementType: Foobar,
beforeDelete: function(items) {
//if delete was in batch you'll get multiple items
//check items here,access this.request.user
return false // deny access
}
});
还有一种声明方式,您可以使用实体集上的权限注释角色名称,这要求您的用户对象实际上有一个角色字段,其中包含角色名称数组。