2011-09-30 12 views
1

私はDocumentManagementシステムで作業しています。データベースに定義されたユーザーは、定義されたアクセス権に基づいて自分の文書を作成/操作できます。ドキュメントの所有者は、他のユーザーがXML Contetntとして保存されたドキュメントにアクセス/変更できるようにすることができます。 LoggedIn Userを自動化する必要があります。編集のために文書を開くときはいつでも。ドキュメントにはCreatedBy、EditingUserプロパティがあります。UIからLoggedinユーザーの詳細を保存し、BLメソッドで使用する

ユーザー "A"が所有する文書は、その文書の書き込みアクセス権を持っているユーザー "B"が編集できる可能性があります。今度は、編集のために開かれた文書(DocumentManagerオブジェクトのSave()BLメソッド内)のLoggedInユーザーの承認を確認する必要があります。ここでは、ログインプロセス後に埋められるBLメソッド内のLoggedIn Userの詳細にアクセスする必要があります(それ以降は変更しないでください)。

私のアプリケーションはWPFアプリケーションです。このような状況に対処する最良のアプローチは何でしょうか。私はしばしば、Loggedinユーザのアガニストである私のアプリケーション(特にBLメソッドの内部)のドキュメントをチェックする必要があります。

答えて

0

セッションのアプローチを取る必要があります。以下のように静的クラスを維持する必要があります。今までにユーザーがログインしている場合は、私はむしろ、ユーザーを承認するためのデカップルメカニズムを示唆しているBLL

public static class Session{ 
    public static Dictionary<User, DateTime> loggedInUser;  
    public static Add(User user){ 
     loggedInUser.Add(user, DateTime.Now); 
     // raise event user arrival 
    } 

    public static GetUser(int Id){ 
     // fetch user; 
    } 

    public static Remove(User user){ 
     loggedInUser.Removed(user); 
     // raise event user left 
    } 

    // TODO: add timer to check itself. If not activity done in past n minutes, 
    //log him out 
} 
1

上のリストに追加する必要があります。したがって、実際のアプリケーションは承認について心配する必要はありません。

承認ロジックをポリシー(XACML)として定義することができます。

XACMLは、認可のための事実上の標準です。

ユーザアクションを実行する前に、XACML PDPで定義された認可ロジックがあると、アプリケーションはXACML PDPを呼び出し、ログインしたユーザが特定のリソースに対してこのアクションを実行できるかどうかを尋ねます。

XACMLを使用すると、アプリケーションロジックに触れることなく、認証のロジックを柔軟に変更できます。

また、XACMLを使用してきわめて細かいルールを定義することもできます。