6

率直に言って、エンティティ レベルの承認の要件があります。このアクセス許可構造、.NET 4.5 での実装方法、および改善方法があるかどうかについて、何らかのガイダンスを得たいと考えています。

ここに行きます:


次のように構造化された一連のデータがあります。

ここに画像の説明を入力

どこ

  • aFleetは 0 個以上のコレクションですCars
  • 他のものFleetを含むことができますFleets

フリートは後で再編成し、組織的な目的のために移動することができます。

私は、これらのエンティティに関連するシステムでのアクセス許可を持ついくつかの役割を持っています:

  • 所有者: フリートから車を追加または削除できます
  • マネージャー: 車にドライバーを割り当てます
  • Driver : 車を運転するだけでよい
  • 整備士: 車を修理することが許可されています

承認ロジックにより、システム内の に、または1 つ以上の役割を持つUserへのアクセスを許可できます。FleetCar

説明に役立ついくつかのシナリオを次に示します。

  1. の役割でUser ジムにFleet #5へのアクセスを許可するとDriver、彼はフリート #2 の下で任意の車を運転することが許可されます。結果の許可により、彼は車 #4、5、6 を運転することができます
  2. ユーザーMauraに整備士としてのアクセス権を付与Car #1すると、結果のアクセス許可により、Maura は車 #1 のみを修理することができます。
  3. ユーザーSarahに Fleet #2 へのアクセス権をロールOwnerとで付与するとMechanic、彼女は、Fleet #2、4、5 に車を追加および削除することが許可され、さらに、#1、2、3、4、5、6 を修理することが許可されます.
  4. フリート #1 へのアクセス権をジェレミーに付与し、フリート #6へのアクセス権を として付与すると、ジェレミーはすべてのフリートに車を追加Owner およびDriver削除し、車 #7、8 を運転することができます。彼は # 以外の車を運転することはできません。 7と8。

このエンティティ レベルの承認への適切なアプローチは何ですか?

重要な場合は、 ASP.net Boilerplateの上に構築された EF6 Code First で .NET 4.5.1 を使用しています。

4

1 に答える 1

1

実装したいきめの細かい承認は、いくつかのバリエーションを持つCakePHP のアクセス制御リスト (ACL) の説明にあるアクセス制御オブジェクト (ACO - 何かが必要なもの) とアクセス要求オブジェクト (ARO - 何かが必要なもの) を思い出させます:

ここに一言で言えば:

ARO (所有者、管理者、運転手、整備士) によって要求される ACO (フリートと車) があります。リクエスタがオブジェクトへのアクセス権を持っているかどうかを知りたい場合は、そのオブジェクトへのパスを見つけます ( Can John access "Car #3"?: root から "Car #3" のパスを見つけます: Fleet #1 > Fleet #2 > Car #3)。次に、各ノードにデフォルトのアクセス許可 "Deny" を割り当てますが、切り替えます。そのノードがリクエスタの許可ノード リストにある場合は「許可」します。最後のノードが「許可」で終わる場合は、まあ...許可し、そうでなければ拒否します。

最初にロジックを理解することが重要です。あらゆる言語での実装は二の次です。

それがあなたを正しい方向に向けてくれることを願っています。

乾杯、

于 2017-03-06T15:31:55.067 に答える