2

ASP.NET Webでアプリケーションを設計しています-そこからMultilevel役割ベースの承認と許可が必要です(CRUD操作)。

データベースのフォームとテーブルでWebフォームとCRUD操作にアクセスする際に認証ユーザーを実行する必要がありました。

アプリケーションの管理者は、特定のページにアクセスできるロールと、実行が許可されている操作を判別できます。

//More Info :

ASP.NETWeb-Form4.0とEntityFramework4.1データベースファーストアプローチを使用しています。

ASP.NET 2.0のメンバーシップ、役割、フォーム認証に精通しています。

データベースの設計に関する推奨事項や支援をいただければ幸いです。

4

1 に答える 1

2

私がこれを正しく理解していれば、ユーザーのセットができます(おそらくサブセットに細分されます:各サブセットはグループです)。

また:

  1. ユーザーは常に少なくとも1つのグループの一部です
  2. グループは別のグループの一部である可能性があります
  3. 実際のACLはグループレベルで設定され、フォームまたはテーブルごとに定義されます。

それで:

    Item     Type  GroupId     C R U D
   Form001    F    ALL_USERS   N Y N N
   Form001    F    Sales       N R U N
   Form002    F    Admin       N Y Y Y
   All_FORMS  T:F  Admin       Y Y Y Y
   Tab-045A   D    Sales       Y Y Y Y

つまり、Form001は(F)ormであり、誰でもそれを読み取ることができます(ただし、その構造を変更することはできません)。SALESグループのユーザーは、フォーム1を使用して更新することもできます。管理者(グループ)は、フォームForm002を変更、削除、または使用できます(ただし、作成はできません...)管理者は新しいフォームを作成できます。Tab-045Aはテーブルであり、そのレコードは、Salesグループのユーザーが作成/使用/変更/削除できます。

いくつかの注意点:

  • 皆さんに好意を持っていただき、特権をSINGLE USERレベルで設定することを許可しないでください。ただし、常にグループレベルでのみ設定してください。新しいユーザーは自動的にALL_USERSの一部になり、後で他のグループに追加(または削除)される可能性があります。
  • テーブルとフォームだけでなく、「フォームのグループ」も用意するのがおそらく最善です(フォームはエンドユーザーが作成できると想定しています)。そうでない場合、CRUDフラグが設定された「C」フィールドはフォームには使用できなくなります。(フォームはユーザーグループが設計できるものですか?それとも、テーブルの場合のように、アプリケーションの一部ですか?)
  • 一般に、作成/読み取り/更新/削除の適切なセマンティクスを定義する必要があります。テーブルの場合、これは(テーブルではなく)単一のレコードを作成することを意味すると思いますが、フォームの場合、現時点では少し混乱しています。
  • 上記の表は単なる例であり、適切に正規化されていません。詳細によっては、少なくとも2つのテーブル、場合によってはそれ以上に分割する必要があります。
  • ユーザーXがオブジェクトZに対して操作Yを実行できるかどうかを確認するには、基本的に、アイテム/グループテーブルで設定された権限を検索し、ユーザーXがどのグループに属しているかを確認する必要があります。
  • ユーザーが2つの異なるグループの一部である場合は、ケースを適切に管理する必要があります。常に、ほとんどの権限を持つグループ、またはすべての権限の和集合を選択する必要があります。
  • ユーザーが別のサブグループであるグループの一部であり、特権が上位レベルのグループで定義されている場合を管理する必要があります。

グループとサブグループを管理する必要があるため、ツリー構造を管理するためにターゲットDBにどのような種類の機能が存在するかをよく確認できます。そして、これに関するいくつかの質問を見て、主題をブラッシュアップする方がよいでしょう。これがあなたに出発点を与えるものですが、それだけではありません:

SQLデータベースにツリーを保存する方法

于 2011-10-26T11:27:29.600 に答える