2

特定の情報へのアクセスを制御するシステムを設計する必要があります。ユーザーからの要件は、アクセスレベルを使用することです。

レベル 1 - サポート
レベル 2 - マネージャー
レベル 3 - シニア マネージャー
レベル 4 - 部門長
等

特定の情報がレベル 1 としてマークされている場合、すべての役割がその情報を表示できる必要があります。レベル 3 としてマークされている場合、シニア マネージャーと部門長のみが表示できますが、マネージャーとサポートの役割は表示できません。

質問

  • ある情報にアクセス レベルを割り当てる場合、この機能を実現するには複数の役割を割り当てる必要がありますか?
  • これを行うより良い方法はありますか?
4

2 に答える 2

1

列挙型の順序がアクセスの優先度を表すように、役割をグローバル列挙型にマップします。次に例を示します。

public enum SecurityGroup
{
    Support, Manager, SeniorManager, DepartmentHead
}

明らかに、これらの役割はプロバイダーの役割と一致する必要があります。次に、Enum.Parseを使用して、次のようにGetRolesForUserから値をキャストします。

var currentUserSecurityGroup = (SecurityGroup)Enum.Parse(typeof(SecurityGroup), Roles.GetRolesForUser(username));

これで、グループに対する相対的な位置を確認できます。

if ( currentUserSecurityGroup <= SecurityGroup.SeniorManager )
   // do stuff
于 2010-03-04T07:08:06.333 に答える
1

フォーム認証を実装し、web.config にロール/レベルを追加する必要があります。どのロールがどのページを取得できるか。

<location path="yourPage.aspx">
    <system.web>
            <authorization>
                <deny users="?"/>
                <allow roles="Manager"/>
                <deny users="Department Head"/>
            </authorization>
    </system.web>

詳細については、次の URL を確認して ください http://msdn.microsoft.com/en-us/library/aa480476.aspx http://devhood.com/tutorials/tutorial_details.aspx?tutorial_id=85

特定の役割に対してページ上の特定の情報を隠したい場合は、次のように行うことができます...

if (System.Web.HttpContext.Current.User.IsInRole("Support"))
        {
            pnl.Visible = false;//try to put your user specific details in panel to hide/show
        }
于 2010-03-04T06:55:07.047 に答える