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

Javascript 如何使用breezejs保护添加或删除实体,javascript,c#,asp.net,security,breeze,Javascript,C#,Asp.net,Security,Breeze,在向breezejs添加或删除实体后,如何保护SaveChanges var newTodo = todoType.createEntity(initialValues); manager.addEntity(newTodo); 我只想向登录用户添加/删除实体。其他用户不应该能够通过javascript黑客将实体添加到另一个用户 通过在服务器上编辑EFContextProvider,可以仅查询允许的实体。但它如何与删除或添加一起工作呢?您可以使用 重写contexProvider的Be

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

  var newTodo = todoType.createEntity(initialValues);
  manager.addEntity(newTodo);
我只想向登录用户添加/删除实体。其他用户不应该能够通过javascript黑客将实体添加到另一个用户


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

您可以使用

重写contexProvider的BeforeSaveEntitysDelegate方法

例如

\u contextProvider.beforeSaveentiesDelegate=beforeSaveenties;
保存实体之前的专用字典(字典参数)
{
var resultToReturn=新字典();
foreach(参数键中的变量类型)
{
var entityName=type.FullName;
变量列表=参数[类型];
如果(entityName==“xyz”&&list[0]。EntityState!=“已添加”)
{
resultToReturn.Add(类型、列表);
}
}
返回arg;
}
这将不会保存新添加的实体名称“xyz”

_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;
        }