寻找防范恶意数据更改的想法:userA 操作(编辑或删除)属于 userB 的数据。由于我们在客户端上创建实体,我们需要将它们(或至少其中一些)分配给经过身份验证的用户。
例如:
var newItem = ds.createNewItem();
newItem.OwnerId(22); //this is the problem that I see.
newItem.Name("New Item");
newItem.Description("I just changed your item!");
... //and so on
ds.saveChanges();
假设我们知道调用我们 API 的用户的身份,SaveChanges
我们如何针对该用户验证我们的实体(新的或修改的)?
想到的第一个想法是根据我们用户的身份继承EFContextProvider
、覆盖BeforeSaveEntity
和检查实体属性。OwnerId
例如:
if (entityInfo.Entity.GetType() == typeof(Item)
&& (entityInfo.EntityState == EntityState.Added
|| entityInfo.EntityState == EntityState.Modified)
&& ((Item)entityInfo.Entity).OwnerId != _currentUserId) {
return false
... //and so on
_currentUserId
如果使用这种方法,在我们的新类的构造函数中建立是否有意义EFContextProvider
?
解决这个问题的想法或更好的方法?