2016-07-13 6 views
0

私はIDbCommandTreeInterceptorという実装を書いて、コンテキストに基づいてクエリを変更しました。コンテキストにアクセスするEF DBインターセプタ(現在のユーザーなど)

私の特定の状況では、ユーザーが照会されたテーブルで何ができるのかを判断するために、インターセプタのユーザーオブジェクトにアクセスする必要があります。

これは行レベルのセキュリティを実装する私のビジョンです。私のDbInterceptorでは、ユーザオブジェクトを取得し、ロールをチェックし、ユーザがアクセスできない行をフィルタリングします。

今質問します。

私はいくつかの記事を読んで、DbInterceptorsが別のスレッドで実行されている可能性があることを理解しています(HttpContext.Currentが存在しません)。

この種のものを実装/整理する方法は?私はコンテキスト(ユーザーが要求しているものなど)にアクセスしたい。

私はOData WebAPIを使用しています。

+0

データアクセスコードでHttpContext.Currentにアクセスすることはお勧めできません。おそらくあなたはこの情報を注入することができます。 –

答えて

0

それをしないでください。これまでこの種の問題がある場合は、アーキテクチャが悪いことを意味します。 DbInterceptorsは完全に隔離されており、他の何かをする必要があります。

DbContextの上に抽象レイヤーを追加して私の問題を解決しました。

関連する問題