2011-07-28 12 views
2

ビルド済みのASP.NETメンバーシップとロールプロバイダを使用して、認証された各ユーザーが表示および編集できるものを制限するシステムを作成したいと考えています。どのようにユーザーをドメインオブジェクトに関連付ける必要がありますか?

ソフトウェアにはすでに「アイテム」と「グループ」という概念があります。各アイテムはグループに属します。

システムのユーザは、実際には同じグループに属します。これは現在、私のドメインモデルでは表現されていません。

これらのユーザーに表示および編集する2つのレベルの権限があります。彼らがグループ内にいる場合、そのグループ内のアイテムを表示できるようにしたいと思います。そのグループに編集権限がある場合、そのグループのアイテムを編集できるようにしたいと思います。

通常、ユーザーは1つのグループに属しますが、ある時点では複数のグループに属している可能性があります。ユーザーは複数のグループに対して表示権限を持つことができますが、表示できるグループのうちの1つ(またはいくつか)のみに対して編集権限を持つことができます。

私はこれにどのように取り組むべきか分かりません。 Group1View、Group1Editなどのすべてのグループに対して2つのロール(asp.netロールプロバイダを使用)を作成するだけですか?または、aspnet_UsersテーブルとGroupsテーブルの間に関係を作成する別のテーブルを作成し、3つ目のカラムでその特権レベルを識別する必要がありますか?

結局私はスティーブ・スミスはおよそここでブログどのように幾分類似権限チェックを実装したいと思います:あなたが提供しなければならない可能性のある入力用http://stevesmithblog.com/blog/favor-privileges-over-role-checks/

感謝を!

答えて

2

これを実装するカスタムメンバーシップおよびロールプロバイダを作成し、このセキュリティコンポーネントをラップして参照します。私はメンバーシップとロールのみを使用して、必要な最小限の要求を提供し、アプリケーションのセキュリティ全体に依存しないようにします。

ロールのプロバイダは、階層的な複雑さを伴うカスタムセキュリティのニーズにうまく対応できません。あなたが言及したことは(名前を使って)動作し、カスタムロールプロバイダは、ユーザーが言及したコンポーネントからアクセスできるロールの名前を派生させる可能性があります。しかし、私は組み込みのフレームワーク機能(ログインコントロール、サイトマップコントロール、またはあなたが使用するもの)を処理するためにのみ使用し、それ以外はすべて独自のセキュリティ設定を使用します。

役割プロバイダは、長期的にはあなたのニーズに厳しすぎるということになります。

HTH。

関連する問題