2

アプリケーションでさまざまなエンティティを追加、更新、および削除する機能は、多くの場合、関係するさまざまなユーザー間で定義された関係によって決定されます。次に例を示します。

  1. 基本ユーザーまたはそのスーパーバイザーは、ユーザーに関連付けられたタスクを作成できますが、基本ユーザーがタスクを追加/更新/削除できないようにタスクをロックできるのはスーパーバイザーだけです。ロックダウンされるまで、両方の個人がタスクを更新できます。

ユーザーの関係とエンティティの状態 (新規、既存)、およびエンティティに関連付けられたユーザー定義のステータスなどを扱う、この種の複雑で高度なルールを実装するための最良のアプローチは何ですか?

ありがとう

4

2 に答える 2

3

ユーザーの関係とエンティティの状態 (新規、既存)、およびエンティティに関連付けられたユーザー定義のステータスなどを扱う、この種の複雑で高度なルールを実装するための最良のアプローチは何ですか?

認証標準、つまり XACML (eXtensible Access Control Markup Language) を使用したい。XACML は次のとおりです。

  • SAML と同様に、OASIS によって開発された標準
  • きめ細かなアクセス制御に焦点を当てた標準: ユーザー情報、リソース情報、状態、およびコンテキスト情報を考慮したアクセス制御
  • 属性ベースのアクセス制御 (ABAC) モデルを実装する標準: ユーザー情報、リソース データ、および状態はすべて属性として見ることができます。
  • ポリシーとルールを使用して属性を構造化し、アクセスを許可/拒否する標準: XACML はポリシーベース
  • MVC アプリケーションのプレゼンテーション層、データ層、ビジネス層など、複数の層にわたって適用できる標準
  • C# (MVC4 など)、Java、Python など、複数のテクノロジと言語に適用できる標準。

XACML を使用すると、リレーションシップを簡単に実装できます。たとえば、従業員は、トランザクションの金額が従業員の承認限度未満であり、トランザクションがロックされていない場合にのみ、トランザクションを承認できます。

ここからどこへ行く?

于 2013-09-26T14:16:40.130 に答える
0

私が働いていた銀行には、銀行階層全体がレポート構造でローンを確認できるローン管理システムがありました。たとえば、市場の幹部は、すべてのレポートのローン ポートフォリオを一度に見ることができます。さらに、すべての部下 (直属または直属) の名前のリストから選択して、その従業員のポートフォリオを表示することができました。

複雑でしたが、レポート構造の HR データベースを維持する必要がありました。それができたら、ユーザー関数 (ストアド プロシージャとしても実行できますが、ユーザー関数は LINQ to SQL バックエンドでうまく機能しました) を作成し、ユーザー x がユーザー y を監督しているかどうかを確認できるようにしました。

したがって、あなたの例では、誰がタスクを所有しているかを知っていて、タスク所有者が現在ログインしているユーザーに報告するかどうかを判断するために使用できるメソッドにアクセスできる限り、簡単に有効化/ページの「ロック」ボタンを無効にします。

レッグワークは、そのレポート構造 DB を作成し、それを最新の状態に保つことにあります。

于 2013-09-25T19:31:11.637 に答える