如何使用 breezejs 保护添加或删除实体

how to secure add or delete entities with breezejs

在我向 breezejs 添加或删除实体后如何保护 SaveChanges?

  var newTodo = todoType.createEntity(initialValues);
  manager.addEntity(newTodo);

我只想 add/delete 登录用户的实体。其他用户不应该能够通过 javascript hack 将实体添加到另一个用户。

可以通过在服务器上编辑 EFContextProvider 来仅查询允许的实体。但是它如何与删除或添加一起使用?

您可以使用

防止在服务器端保存更改

覆盖 contexProvider 的 BeforeSaveEntitiesDelegate 方法。

例如

_contextProvider.BeforeSaveEntitiesDelegate = BeforeSaveEntities;

private Dictionary<Type, List<EntityInfo>> BeforeSaveEntities(Dictionary<Type, List<EntityInfo>> arg)
        {
            var resultToReturn = new Dictionary<Type, List<EntityInfo>>();
            foreach (var type in arg.Keys)
            {
                var entityName = type.FullName;
                var list = arg[type];
                if (entityName == "xyz" && list[0].EntityState!="Added")
                {
                    resultToReturn.Add(type, list);
                }
            }
            return arg;
        }

这不会保存新添加的实体名称 "xyz"。