6

私は一般的なデータベース クエリ ツール、.Net 3.5 Windows フォーム アプリケーションを開発しています。プレゼンテーション層をデータベース層から独立させるために。DevExpress の ORM フレームワークである XPO を使用しています。

しかし、アクセス制御機能が組み込まれていません。 インターネットをサーフィンしていると、WCF Data Services に AOP (Aspect Oriented Programming) に準拠した興味深い概念、Interceptor があることがわかりました。

ORM でアクセス制御を構築するような経験をしたことがある人がいると思います。私の基本的な要件は次のとおりです。

  1. これは一般的な方法であり、実行時にユーザーが制御する必要があります。したがって、ハードコーディングは受け入れられません。
  2. 属性、データベース テーブル、または外部アセンブリに基づく場合もあります。

私は準備ができているソリューションを喜んで購入します。AOP の考え方によれば、アクセス制御機能は既存の機能と簡単に統合でき、以前の開発者はほとんど意識せずに統合できます;)

どんな提案でも大歓迎です。

4

2 に答える 2

1

この答えがあなたの状況に役立つかどうかはわかりませんが、あなたにとっては興味深いものになる可能性があります。

X-tensive会社(DataObjects.Net ORMの開発者)は、数か月以内にDataObjects.Netに同様の機能を実装することを計画しています。X-tensiveの計画は、おそらく属性と側面に基づいて、すぐに使用できるフル機能のセキュリティ拡張機能を提供することです。確かにそれはこのORMと密接に関連していますが、その説明からいくつかのアイデアを導き出すことができます。ここで機能リクエストとその説明を参照してください。

Rhino Securityもご覧ください。このプロジェクトの現在の状況はわかりませんが、このようなソリューションがあなたのケースに役立つ可能性があります。

于 2010-03-05T11:18:09.047 に答える
0

ORM とプレゼンテーション層の間に層を構築してみませんか? この分離を行うことで、データ ソースを簡単に切り替えることができます (将来、データを別のサーバーに置き、Web サービスを介してアクセスする可能性があります)。このレイヤーには派手な名前があると思いますが、私はすべてのインターフェースをマネージャーと呼んでいます。

プレゼンテーション -> マネージャー -> データ アクセス層 -> DB

例:

var user = Program.Components.Get<IUserManager>().GetById(1);
user.FirstName = "Jonas";
Program.Components.Get<IUserManager>().Save(user);

マネージャーでは、IIdentityIPrincipal (.Net に組み込まれたアクセス制御インターフェイス) を使用してアクセスを制御できます。http://msdn.microsoft.com/en-us/library/ms172765(VS.80).aspx

于 2010-05-06T17:26:05.367 に答える