2

多くの現実世界のアプリケーションと同様に、セキュリティ (ログイン/パスワード) は、完全なアプリケーションへのアクセスを許可/拒否するためだけのものでした。現在、クライアントは、一部の Web ページは表示のみ可能にする必要がある、一部のユーザーは他のページを削除できるなど、きめ細かなセキュリティを要求しています。基本的に、クライアントは次のことを要求しています。

有効な権限:: ユーザー --> Web ページ --> アクセスの種類(表示、作成/編集、削除)

申込内容

  • ASP.NET/C#
  • ビジネス データ用の MSSQL Server 2008
  • ユーザー/パスワード/プロファイル/ログの SQLCE
  • メイン UI の Ex.NET

security.sdfファイルを強化し、画面 (Web ページ) のテーブルと、ユーザー + 画面 + アクセスの種類を示す番号の結合テーブルを用意する方がよいと議論しました。

  • 1: 読む
  • 2: 書く
  • 4: 削除する

これらは、ビットごとの演算子を使用してチェックできます。アプリケーションは ASP.NET 偽装を使用して MSSQL2008 にアクセスします

問題は、それを Web アプリケーションにどのように実装するかです。

誰かがより良いアイデアを持っている場合は、共有してください!!!

4

1 に答える 1

3

このIsInRole機能を使用して、ユーザーを役割に分類できます。各役割には、実行のみが可能なアクションを含めることができます。ですから、魔女の役割を尋ねることによって、あなたは彼に考えさせるかどうかを決めることができるユーザーです。

HttpContext.Current.User.IsInRole("Role")

または、逆に行うこともできます。このアクションがこのロールで使用できるかどうかを確認してください。これは、権限とチェックを備えた単純なオブジェクトです。

public enum csPermissions
{
    pActionDelete = 1,   
    pActionEdit = 2 , 
    // more names...
}

private int[] AdminPermission = { 
    (int)csPermissions.pActionEdit, 
    (int)csPermissions.pActionDelete, 
    // more permissions...
};

private int[] BackOfficePermission = { 
    (int)csPermissions.pActionEdit, 
    // more permissions...
}; 

public static bool IsThisAllowed(csPermissions AskPermitForThisAction)
{
    // questions here for all users roles...
    // here is only an example 
    if (HttpContext.Current.User.IsInRole("Administator")))
    {
        for (int i = 0; i < AdminPermission.Length; i++)
            if (AdminPermission[i] == (int)AskPermitForThisAction)
                return true;
    } 

    // no permission found  
    return false;
 }
于 2012-06-04T11:31:36.543 に答える