0

組み込みの役割ベースのセキュリティを使用してユーザーを特定のページまたはアクションに制限する ASP.Net 2.0+ アプリを想像してみてください。

さらに、ユーザーの属性に基づいて個々のユーザーをデータのサブセットに制限するルールが存在するとします (実装方法は問いません)。たとえば、マネージャは自分の部下の業績履歴のみを参照できます。営業マネージャは、自分の営業担当者の販売目標達成情報のみを見ることができます。営業担当者は、自分の顧客の保留中の注文のみを見ることができます。

これらのルールは、ドロップダウンやその他の複数レコードの表示がどのように入力されるか、および検索とルックアップの目的でテキスト ボックスに入力できる値に影響します。影響を受ける可能性のある機能や画面タイプは他にも多数あります。したがって、これはクロスアプリの問題です。

私の質問: アプリケーション全体でこのような制限を簡単に実装するには、どのような種類のパターンまたは手法を使用すればよいでしょうか?

4

3 に答える 3

3

リポジトリパターンを実装できます。次に、呼び出しを行うときに、現在のユーザーを渡し、そのユーザーに基づいて返されるデータを制限するか、リポジトリを構築するときにユーザーを渡します。

リポジトリパターン

好きな人

public class DataRepository
{
    private _user;

    public DataRepority(User user)
    {
         _user =user;    
    }

    public IEnumerable<SalesData> GetMonthlySalesData(User user)
    {
        //code here
    }
}
于 2011-06-06T21:52:56.817 に答える
1

OPの最初の質問以来、橋の下に大量の水が流れています。提供された回答は素晴らしいものでしたが、すべてコーディングが必要です。

それ以来、NIST によって提唱されたアクセス制御モデルである属性ベースのアクセス制御 ( ABAC は、中央のポリシー決定ポイントで外部的に定義、維持、および実行する構成可能なポリシーとして、承認ロジックを表現するのに役立ちます。

ABAC を実装するソリューションはいくつかあります。詳細については、ウィキペディアを参照することをお勧めします。

于 2016-06-10T00:39:35.947 に答える
0

これらの分野横断的な問題に対して独自のカスタム属性を使用することを検討し、必要な属性に対してクレーム ベースの ID システム (例: IClaimsIdentity - Windows Identity Foundation) を実装する可能性があります。

ここではユーザーに基づいてデータを制御しているため、データをバインドしているため、WebフォームのModel View Presenterパターンも調べます。http://msdn.microsoft.com/en-us/library/ff647117を参照してください。 aspx これにより、定義済みのアクセス許可に基づいて出力をより適切にテストでき、コード ビハインドに大量のジャンクを貼り付けるよりも、コンボ ボックスなどへのバインドを追跡するためのより良い方法が提供されます。

于 2011-06-06T23:49:03.707 に答える