私はRest API Frameworkを作成していますが、私はdb認証コンテキストを作成したいと思います。 コンテキストはロールレゾルバを取り、それを使用してデフォルトセットをフィルタリングします。一連のルールに基づいています。私は多分、私がEFコアのDbリソース権限
public class AuthorizationContext : DbContext
{
protected IConstraintResolver _constraintResolver;
public AuthorizationContext(IConstraintResolver constraintResolver)
{
this._constraintResolver = constraintResolver;
}
public override DbSet<TEntity> Set<TEntity>()
{
var defaultSet = base.Set<TEntity>();
var constraints = this._constraintResolver.GetConstraintsForTypeByRole<TEntity>();
var filteredSet = base.Set<TEntity>().AsQueryable();
foreach (var constraint in constraints)
{
filteredSet = filteredSet.Where(constraint);
}
//how do I apply this back to the innerQueryable
return filteredSet;
}
}
特定のリソースへのアクセスを禁止する設定が、私はfilteredDBSet
に私のQueryable
背中を変換することができないので、これは私をコンパイルしていないエンティティにデフォルトのフィルタを適用できると思っていた私の最初の試みで、
。
私はEF-CoreのSecure dataへのいくつかの記事をいくつか見つけましたが、この方法を使用するにはデータを保護する方法が必要ではありません。
- は、私は私のコンテキストが暗黙のうちに安全なデータ役割 をオフに基づいてしたい(コンテキストを使用して、任意のユーザーが承認をチェックするのに約 wrapingそのクエリを心配する必要はありませんように。)
- 追加の多くをユーザーの構成
SQLのメタデータに基づいて式を生成する関数があります。私の問題はDBSet
にフィルターに適用されています。
あなたにはExpression<TEntity, Bool>
が与えられていると仮定します。ユーザーが私が決定したデータにしかアクセスまたは変更できないように、コンテキストを保護するにはどうすればよいですか?
EFC 2.0 [グローバルクエリフィルタ](https://docs.microsoft.com/en-us/ef/core/querying/filters) –
あなたはEntityframework plusのものを参照していますか?私はそれらがef7で動作しないと思った? –
いいえ、リンクからわかるように、これらはEFコアの一部です。 –