2

私は、ASP.NETベースのWebアプリケーションから、Multilevelロールベースの承認とアクセス許可(CRUD操作)が必要です。複数レベルのロールベースの承認のためのデータベース設計

データベースのフォームとテーブルでWebフォームとCRUD操作にアクセスするには、承認ユーザーが必要でした。

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

//More Info : 

私は、ASP.NET Web-Form 4.0とEntity Framework 4.1 Database Firstアプローチを使用しています。

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

私はデータベースを設計する際の推奨や助けに感謝します。

+0

あなたはこれまでに何がありますか? – bryanmac

+1

ロールのリストは静的ですか?または動的ですか? 「ロール」は特定のユーザーに与えられたラベルですか、またはユーザーグループ(およびグループのグループ)を作成し、そのグループにロールを関連付けることができますか? –

+0

@bryanmac:私はまだ何もしません、私はちょうどカスタムロールプロバイダ – Mostafa

答えて

2

私はこれを正しく理解していれば、ユーザーのセットを持つことになります(サブセットに細分されている可能性があります:サブセットはグループです)。

また:

  1. ユーザーは常に少なくとも一つの基
  2. Aグループは ため
  3. 実際のACLはグループレベルで設定と定義される別の基の一部であってもよいの一部である各フォームまたは表。
  4. だから、

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を使用して更新することもできます。 管理者(グループ)は、Form Form2を変更、削除、または使用できます(作成しません)。 管理者は新しいフォームを作成できます。 Tab-045Aは、そのレコードをSalesグループのユーザーが作成/使用/変更/削除できるテーブルです。

いくつかの注意事項:

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

対象のDBにどのような種類の施設が存在するかを見て、ツリー構造を管理することをお勧めします。そして、あなたはこのことについてのいくつかの質問を見て、もっとよく練習してください。ここで1はあなたのスタートを与えることですが、それは一つだけではありません。

How to store a tree in SQL database

+0

ありがとう、私はあなたの言ったことを理解しています、私はあなたの投稿を回答として受け入れませんでした。 – Mostafa

+0

答えを受け入れる前に、ここで質問したら、私は1日か2日かかります。 –

関連する問題