悪意のあるデータの変更を防ぐためのアイデアを探しています: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を呼び出すユーザーのIDがわかっているとすると、SaveChanges
このユーザーに対してエンティティ(新規または変更済み)をどのように検証しますか?
頭に浮かぶ最初の考えは、エンティティプロパティをサブクラス化EFContextProvider
し、オーバーライドして、ユーザーのIDと照合することです。例えば: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
クラスのコンストラクターで確立することは意味がありますか?
この問題に取り組むためのアイデアまたはおそらくより良い方法はありますか?