リポジトリのライブラリを使用してデータベースのすべての操作を実行するアプリケーションがあります。このライブラリには多くのメソッドがあり、一部のユーザーにはすべての操作を実行する権限がありますが、そうでないユーザーもいます。
私はクライアントアプリケーションを持っています。それがLAN内のコンピューターにインストールされている場合、このクライアントはリポジトリを直接使用してデータベースに接続します。このように、パフォーマンス上の理由から、クライアントはWCFホストを通過する必要がありません。
アプリケーションがLANの外部のコンピューターにインストールされている場合、アプリケーションはWCFサービスを介して接続し、リポジトリを使用してデータベースに接続します。
私の質問は、ユーザーがリポジトリメソッドを実行する権限を持っているかどうかを確認する方法です。
私は2つの選択肢を考えています。1つは、リポジトリにオブジェクトを作成するときです。オブジェクトは、アプリケーションを起動すると作成され、アプリケーションを閉じると破棄されます。リポジトリを作成すると、すべてのユーザーのすべてのアクセス許可構成が取得されるため、データベースに対して1つのクエリのみを実行します。ただし、アプリケーションが非常に大きい場合やユーザーが多い場合は、大量のメモリを消費する可能性があり、これは良くありません。
もう1つのオプションは、リポジトリ上のメソッドごとに、ユーザーとパスワードの2つの追加の引数を渡すことです。したがって、各メソッドが最初に行うことは、データベースにアクセス許可を照会することです。これにより、メモリの消費量は少なくなりますが、データベースへのクエリが増えます。クエリは非常に単純ですが、リソース(接続)を消費します。
したがって、権限を制御するためのオプションが他にもあるかどうか、または最初のオプションが適切なソリューションであるかどうかを知りたいと思います。